尚硅谷java基础学习笔记day04

    技术2024-12-20  4

    尚硅谷java基础学习笔记

    day04

    分支结构之二:switch-case

    1.格式

    switch(表达式){ case 常量1: 执行语句1; //break;

    case 常量2: 执行语句2; //break;

    default: 执行语句n; //break;

    }

    2.说明:

    ① 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。 当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构 末尾结束为止。

    ② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构

    ③ switch结构中的表达式,只能是如下的6种数据类型之一: byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)

    ④ case 之后只能声明常量。不能声明范围。

    ⑤ break关键字是可选的。

    ⑥ default:相当于if-else结构中的else. default结构是可选的,而且位置是灵活的。

    class SwitchCaseTest { public static void main(String[] args) { int number = 5; switch(number){ case 0: System.out.println("zero"); break; case 1: System.out.println("one"); break; case 2: System.out.println("two"); break; case 3: System.out.println("three"); break; default: System.out.println("other"); //break; } String season = "summer"; switch (season) { case "spring": System.out.println("春暖花开"); break; case "summer": System.out.println("夏日炎炎"); break; case "autumn": System.out.println("秋高气爽"); break; case "winter": System.out.println("冬雪皑皑"); break; default: System.out.println("季节输入有误"); break; } //**************如下的两种情况都编译不通过********************* //情况一 /* boolean isHandsome = true; switch(isHandsome){ case true: System.out.println("我好帅啊~~~"); break; case false: System.out.println("我好丑啊~~~"); break; default: System.out.println("输入有误~~~"); } */ //情况二 /* int age = 10; switch(age){ case age > 18: System.out.println("成年了"); break; default: System.out.println("未成年"); } */ } }

    例题:对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

    说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。

    class SwitchCaseTest1 { public static void main(String[] args) { /* int score = 78; switch(score){ case 0: case 1: case 2: ... case 100: } */ /* int score = 78; if(score >= 60){ }else{ } */ int score = 78; switch(score / 10){ case 0: case 1: case 2: case 3: case 4: case 5: System.out.println("不及格"); break; case 6: case 7: case 8: case 9: case 10: System.out.println("及格"); break; } //更优的解决方案: switch(score / 60){ case 0: System.out.println("不及格"); break; case 1: System.out.println("及格"); break; } } }

    编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序输出输入的日期为2019年的第几天。

    2 15: 31 + 15

    5 7: 31 + 28 + 31 + 30 + 7

    说明:break在switch-case中是可选的

    import java.util.Scanner; class SwitchCaseTest2 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入2019年的month:"); int month = scan.nextInt(); System.out.println("请输入2019年的day:"); int day = scan.nextInt(); //定义一个变量来保存总天数 int sumDays = 0; //方式一:冗余 /* if(month == 1){ sumDays = day; }else if(month == 2){ sumDays = 31 + day; }else if(month == 3){ sumDays = 31 + 28 + day; }else if(month == 4){ sumDays = 31 + 28 + 31 + day; } //... else{//month == 12 //sumDays = ..... + day; } */ //方式二:冗余 /* switch(month){ case 1: sumDays = day; break; case 2: sumDays = 31 + day; break; case 3: sumDays = 31 + 28 + day; break; ... } */ switch(month){ case 12: sumDays += 30; case 11: sumDays += 31; case 10: sumDays += 30; case 9: sumDays += 31; case 8: sumDays += 31; case 7: sumDays += 30; case 6: sumDays += 31; case 5: sumDays += 30; case 4: sumDays += 31; case 3: sumDays += 28; case 2: sumDays += 31; case 1: sumDays += day; } System.out.println("2019年" + month + "月" + day + "日是当年的第" + sumDays + "天"); } }

    For循环结构的使用

    一、循环结构的4个要素

    ① 初始化条件 ② 循环条件 —>是boolean类型 ③ 循环体 ④ 迭代条件

    二、for循环的结构

    for(①;②;④){ ③ } 执行过程:① - ② - ③ - ④ - ② - ③ - ④ - … - ②

    class ForTest { public static void main(String[] args) { /* System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); */ for(int i = 1;i <= 5;i++){//i:1,2,3,4,5 System.out.println("Hello World!"); } //i:在for循环内有效。出了for循环就失效了。 //System.out.println(i); //练习: int num = 1; for(System.out.print('a');num <= 3;System.out.print('c'),num++){ System.out.print('b'); } //输出结果:abcbcbc System.out.println(); //例题:遍历100以内的偶数,输出所有偶数的和,输出偶数的个数 int sum = 0;//记录所有偶数的和 int count = 0;//记录偶数的个数 for(int i = 1;i <= 100;i++){ if(i % 2 == 0){ System.out.println(i); sum += i; count++; } //System.out.println("总和为:" + sum); } System.out.println("总和为:" + sum); System.out.println("个数为:" + count); } }

    编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。

    class ForTest1 { public static void main(String[] args) { for(int i = 1;i <= 150;i++){ System.out.print(i + " "); if(i % 3 == 0){ System.out.print("foo "); } if(i % 5 == 0){ System.out.print("biz "); } if(i % 7 == 0){ System.out.print("baz "); } //换行 System.out.println(); } } }
    Processed: 0.043, SQL: 9