分支结构:switch-case
1.格式
switch(表达式){
case 常量1:
执行语句1;
case 常量2:
执行语句2;
……
defalut:
执行语句n;
//break
}
2.说明
1)根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此末尾结束为止。
2)break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch结构。
3)switch结构中的表达式,只能是以下六种类型之一:byte、short、char、int、枚举类型(jdk5.0新增类型)、String(jdk7.0新增类型)。
4)case之后只能声明常量,不能声明范围。只能是==的关系。不能判断布尔类型(如 case(a>3):)
5)break关键字是可选的。
6)default相当于if-else的else。efault结构是可选的。位置灵活,可放在末尾,可放在开头,也可放在几个case中间。先看case,再看default,看完default再往下走。不想往下走加上break。
例1:
代码实现:
class SwitchCaseTest{ public static void main(String[] args){ int num=2; switch(num){ case 0: System.out.println("zero"); case 1: System.out.println("one"); case 2: System.out.println("two"); case 3: System.out.println("three"); default: System.out.println("other"); } } }
编译实现:
------------恢复内容开始------------
分支结构:switch-case
1.格式
switch(表达式){
case 常量1:
执行语句1;
case 常量2:
执行语句2;
……
defalut:
执行语句n;
//break
}
2.说明
1)根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此末尾结束为止。
2)break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch结构。
3)switch结构中的表达式,只能是以下六种类型之一:byte、short、char、int、枚举类型(jdk5.0新增类型)、String(jdk7.0新增类型)。
4)case之后只能声明常量,不能声明范围。只能是==的关系。不能判断布尔类型(如 case(a>3):)
5)break关键字是可选的。
6)default相当于if-else的else。efault结构是可选的。位置灵活,可放在末尾,可放在开头,也可放在几个case中间。先看case,再看default,看完default再往下走。不想往下走加上break。
例1:
代码实现:
class SwitchCaseTest{ public static void main(String[] args){ int num=2; switch(num){ case 0: System.out.println("zero"); case 1: System.out.println("one"); case 2: System.out.println("two"); case 3: System.out.println("three"); default: System.out.println("other"); } } }
编译实现:
例2:使用switch把小写类型的char型转为大写,只转换a,b,c,d,e,其余的输出"other"
提示:String word=scan.next(); char c=word.charAt(0); swicth(c){}
还没做
例3:对学生成绩大于60分的,输出“合格“,低于60分的,输出“不合格“。
代码实现:
class SwitchCaseTest{ public static void main(String[] args){ int score = 70; 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-case结构中的多个执行语句相同,可考虑进行合并。
编译实现:
例4:根据用于指定月份,打印该月份所属的季节。
3,4,5春季 6,7,8夏季 9,10,11秋季 12,1,2冬季
代码实现:
class SwitchCaseTest{ public static void main(String[] args){ int season = 2; switch(season){ case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; case 12: case 1: case 2: System.out.println("冬季"); break; } } }
编译实现:
例5:编写程序:从键盘上输入2019年的"month"和“day”,要求输出的日期为2019年的第几天。(日积月累)
方法1代码:
import java.util.Scanner; class SwitchCaseTest{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入你的月份:"); int month = scan.nextInt(); System.out.println("请输入你的天数:"); int day = scan.nextInt(); int sumDays = 0; switch(month){ case 1: sumDays = day; break; case 2: sumDays = 31 + day; break; case 3: sumDays = 31 + 28 + day; break; case 4: sumDays = 31 + 28 + 31 +day; break; ... } System.out.print("2019年"+month+"月"+day+"日是当年的第"+sumDays+"天"); } }
方法2代码:(这种方法不需要用break,还省时)
import java.util.Scanner; class SwitchCaseTest{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入你的月份:"); int month = scan.nextInt(); System.out.println("请输入你的天数:"); int day = scan.nextInt(); int sumDays = 0; 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.print("2019年"+month+"月"+day+"日是当年的第"+sumDays+"天"); } }
编译运行: