JAVA的学习日记DAY5(2024.3.31)(b站韩顺平老师课程学习笔记版)
(明天就是4月啦!要好好学习!坚持日更!)
文章目录
分支控制 if - else
例:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行为负责,送入监狱”
双分支练习
-
编写程序,声明2个double型变量并赋值。判断第一个数大于10.0,且第2个数小于20.0,打印两数之和。
-
定义两个变量int,判断二者的和,是否能被3又能被5整除,打印提示信息
-
判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被4整除,但不能被100整除;(2)能被400整除
多分支
练习
嵌套分支
练习
参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。【可以让学员先练习下】,输入成绩和性别,进行判断和输出信息。
switch分支结构
例子
注意事项和细节
-
表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int
-
switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum,String)
-
case子句中的值必须是常量(‘a’,1),或者是常量表达式,而不能是变量
-
default子句是可选的,当没用匹配的case时,执行default;如果没有default子句,没有匹配任何常量,则没有输出
-
break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非执行到break
练习
switch和if的比较
- 如果判断的具体数值不多,而且符合byte、short、int、char、enum【枚举】、String这6种类型。虽然两个语句都可以使用,建议使用switch语句
- 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广
for语法
练习
while循环
注:(1)循环条件是返回一个布尔值的表达式(2)while循环是先判断再执行语句
练习
-
打印1- 100之间所有能被3整除的数
-
打印40 - 200之间所有的偶数
do…while循环控制
注:(1)循环条件是返回一个布尔值的表达式(2)do…while循环是先执行,再判断,因此它至少执行一次
练习
-
打印1-100
-
计算1-100的和
-
统计1-200之间能被5整除但不能被3整除的个数
-
如果李三不还钱,则老韩将一直使出五连鞭,直到李三说还钱为止
多重循环控制
练习
-
统计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-100以内的数求和,求出当和第一次大于20的当前数 [for + break]
-
实现登录验证,有3次机会,如果用户名为“丁真”,密码“666”提示登录成功,否则提示还有几次机会 [for + break]
continue语法
对比
-
break
-
continue
-
return
注:当return用在方法时,表示跳出所在的方法;当return用在main时,表示退出程序
练习作业
-
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 + " 个路口"); } }
-
实现判断一个整数,属于哪个范围:大于0;小于0;等于0
-
判断一个整数是否是水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。例如:153 = 1 * 1 * 1 + 3 * 3 * 3 + 5 * 5 * 5
-
输出1-100之间的不能被5整除的数,每5个一行
-
输出小写的a-z以及大写的Z-A
-
求出1-1/2+1/3-1/4…1/100的和
-
求1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+…+100)的结果