JAVA的学习日记DAY5

JAVA的学习日记DAY5(2024.3.31)(b站韩顺平老师课程学习笔记版)

(明天就是4月啦!要好好学习!坚持日更!)

分支控制 if - else

例:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行为负责,送入监狱”在这里插入图片描述

双分支练习
  1. 编写程序,声明2个double型变量并赋值。判断第一个数大于10.0,且第2个数小于20.0,打印两数之和。在这里插入图片描述

  2. 定义两个变量int,判断二者的和,是否能被3又能被5整除,打印提示信息在这里插入图片描述

  3. 判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被4整除,但不能被100整除;(2)能被400整除在这里插入图片描述

多分支

在这里插入图片描述

练习

在这里插入图片描述

在这里插入图片描述

嵌套分支
练习

参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。【可以让学员先练习下】,输入成绩和性别,进行判断和输出信息。在这里插入图片描述

switch分支结构

在这里插入图片描述

例子

在这里插入图片描述

在这里插入图片描述

注意事项和细节
  1. 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int在这里插入图片描述

  2. switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum,String)

  3. case子句中的值必须是常量(‘a’,1),或者是常量表达式,而不能是变量

  4. default子句是可选的,当没用匹配的case时,执行default;如果没有default子句,没有匹配任何常量,则没有输出

  5. break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非执行到break在这里插入图片描述

练习

在这里插入图片描述

  1. 在这里插入图片描述

  2. 在这里插入图片描述

  3. 在这里插入图片描述

switch和if的比较
  1. 如果判断的具体数值不多,而且符合byte、short、int、char、enum【枚举】、String这6种类型。虽然两个语句都可以使用,建议使用switch语句
  2. 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广
for语法

在这里插入图片描述

练习

在这里插入图片描述

  1. 在这里插入图片描述

  2. 在这里插入图片描述

while循环

注:(1)循环条件是返回一个布尔值的表达式(2)while循环是先判断再执行语句

练习
  1. 打印1- 100之间所有能被3整除的数在这里插入图片描述

  2. 打印40 - 200之间所有的偶数在这里插入图片描述

do…while循环控制

在这里插入图片描述

注:(1)循环条件是返回一个布尔值的表达式(2)do…while循环是先执行,再判断,因此它至少执行一次

练习
  1. 打印1-100在这里插入图片描述

  2. 计算1-100的和在这里插入图片描述

  3. 统计1-200之间能被5整除但不能被3整除的个数在这里插入图片描述

  4. 如果李三不还钱,则老韩将一直使出五连鞭,直到李三说还钱为止在这里插入图片描述

多重循环控制
练习
  • 统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分和三个班的及格人数【学生成绩从键盘输入】

    import java.util.Scanner;
    public class duochong{
    	public static void main(String[] args){
    		//分析
    		//(1) 先计算一个班,5个学生的成绩,使用for
    		//1.1 创建Scanner对象,然后接收用户输入
    		//1.2 得到该班级的平均分,定义一个double sum 把该班级5个学生的成绩累积
    		//
    		//(2) 统计3个班(每个班5个学生)平均分
    		//(3) 所有班级的平均分
    		//3.1 定义一个变量,double totalScore 累积所有学生的成绩
    		//3.2 当多重循环结束后,totalScore / (3 * 5)
    		//(4) 统计三个班及格人数
    		//4.1 定义变量 int passNum = 0;当有一个学生成绩>=60,passNum++
    		//4.2 如果>=60 passNum++
    		//创建Scanner对象
    		Scanner myScanner = new Scanner(System.in);
    		double totalScore = 0;//累积所有学生成绩
    		int passNum = 0;//累积及格人数
    		for(int i = 1; i <= 3; i++){
    			double sum = 0;//一个班级的总分
    		    for(int j = 1; j <= 5; j ++){
                    System.out.println("请输入第" + i + "个班的第" + j + "个学生的成绩");
    			    double score = myScanner.nextDouble();
    			    //当有一个学生成绩>=60,passNum++
    			    if(score >= 60){
    			    	passNum++;
    			    }
    			    sum += score;
    			    System.out.println("成绩为" + score);
    		}
    		//因为sum是5个学生的总成绩
    		System.out.println("班级总分=" + sum + " 平均分=" + (sum / 5));
    		//把sum累积到totalScore
    		totalScore += sum;
    
    		}
    		System.out.println("三个班总分="+ totalScore + " 平均分=" + totalScore / 15);
    		System.out.println("及格人数=" + passNum);
    	}
    }
    

    在这里插入图片描述

空心金字塔
  • 在这里插入图片描述

    public class stars{
    	public static void main(String[] args){
    		//分析
    		/*1.先打印一个矩形
    		*****
    		*****
    		*****
    		*****
    		*****
    		
    		2.打印半个金字塔
    		*      //第1层 有1个*
    		**     //第2层 有2个*
    		***    //第3层 有3个*
    		****   //第4层 有4个*
    		*****  //第5层 有5个*
    		
    		3.打印整个金字塔
    		 *      //第1层 有1个*   2 * 1 - 1  有4=(总层数-1)个空格
    		***     //第2层 有3个*   2 * 2 - 1  有3=(总层数-2)个空格
    	   *****    //第3层 有5个*   2 * 3 - 1  有2=(总层数-3)个空格
    	  *******   //第4层 有7个*   2 * 4 - 1  有1=(总层数-4)个空格
    	 *********  //第5层 有9个*   2 * 5 - 1  有0=(总层数-5)个空格
    	 
    	 4.打印空心的金字塔
    		 *      //第1层 有1个*  当前行的第一个位置是*,最后一个位置也是*
    		* *     //第2层 有2个*  当前行的第一个位置是*,最后一个位置也是*
    	   *   *    //第3层 有2个*  当前行的第一个位置是*,最后一个位置也是*
    	  *     *   //第4层 有2个*  当前行的第一个位置是*,最后一个位置也是*
    	 *********  //第5层 有9个*  全部输出*
    	 
    		*/
    	    int totallevel = 5;//层数
            for(int i = 1; i <= totallevel; i++){//i表示层数
    
            	//在输出*之前,还要输出 对应空格 = 总层数-当前层
            	for(int k = 1; k <= totallevel - i; k++){
            		System.out.print(" ");
            	}
            	for(int j = 1; j <= 2 * i - 1; j++){
            		//当前行的第一个位置是*,最后一个位置也是*
            		if(j == 1 || j == 2 * i - 1 || i == totallevel){
            			System.out.print("*");
            		}else{//其他情况输出空格
            			System.out.print(" ");
            		}
            	}
            	System.out.println("");
            }	
    	}
    }
    

    在这里插入图片描述

break语法

在这里插入图片描述

练习
  1. 1-100以内的数求和,求出当和第一次大于20的当前数 [for + break]在这里插入图片描述

  2. 实现登录验证,有3次机会,如果用户名为“丁真”,密码“666”提示登录成功,否则提示还有几次机会 [for + break]在这里插入图片描述

continue语法
对比
  1. break在这里插入图片描述

  2. continue在这里插入图片描述

  3. return在这里插入图片描述

    注:当return用在方法时,表示跳出所在的方法;当return用在main时,表示退出程序

练习作业
  1. 在这里插入图片描述

    public class zuoye01{
    	public static void main(String[] args){
    		//分析
    		//1.定义 double money 保存100000
    		//2.根据题的要求,分析出有三种情况
    		//  money > 50000
    		//  money >=1000 && money <= 50000
    		//  money < 1000
    		//3.使用多分支 if-elseif-else
    		//4.while break(money < 1000),同时使用一个变量count来保存通过路口
    		double money = 100000;
    		int count = 0;//累积过的路口数量
    		while(true){
    			if(money > 50000){
    				money = money *(1 - 0.05);
    				count ++;
    			}else if(money >= 1000 && money <= 50000){
    				money = money - 1000;
    				count ++;
    			}else{
    				break;
    			}
    		}
    		System.out.println(money + " 可以过 " + count + " 个路口");
    	
    	}
    }
    

    在这里插入图片描述

  2. 实现判断一个整数,属于哪个范围:大于0;小于0;等于0在这里插入图片描述

  3. 判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。例如:153 = 1 * 1 * 1 + 3 * 3 * 3 + 5 * 5 * 5在这里插入图片描述

  4. 输出1-100之间的不能被5整除的数,每5个一行在这里插入图片描述

  5. 输出小写的a-z以及大写的Z-A在这里插入图片描述

  6. 求出1-1/2+1/3-1/4…1/100的和在这里插入图片描述

  7. 求1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+…+100)的结果在这里插入图片描述

  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值