Switch表达式
1.语句格式:
switch(表达式) {
case 值1:
语句体1;
break; (中断,结束的意思)
case 值2:
语句体2;
break;
…
default: (默认的意思)
语句体n+1;
break;
}
2.执行流程
- (1)表达式中的值和case中的 值1进行比较,匹配成功,就执行语句1,遇见break,switch 结束了
- (2)依次case值2,进行比较,成立,执行语句2,语句结束…
- (3)如果上述都不匹配,执行default中的语句,break结束.
3.注意事项
- 1.switch结构中的表达式只能是如下6中数据类型之一:
byte、short、char、int、枚举类型(jdk5.0新增)、String类型(jdk7.0新增)。
补充说明:
java中基本数据类型的输入包括:
整形的输入:in.nextInt();
单精度浮点型:in.nextFloat();
双精度浮点型:in.nextDouble();
字符串类型:in.next();in.nextLine();
但是并没有in.nextChar();
有时候需要我们用Scanner接收char类型数据,而不是接收String。
这时候我们可以利用如下代码解决这个问题:
Scanner in = new Scanner(System.in);
char c = in.next().charAt(i);
//把str的第i个char值赋值给c,类似于数组的查找。
//charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法.
//charAt()方法返回指定索引位置的char值。如: str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符.
- 2.case之后只能声明常量,不能声明范围。
举例如下:
4.switch语句实例
从键盘上分别输入年、月、日,判断这一天是当年的第几天。
注:判断一年是否是闰年的标准:
(1)可以被4整除,,但不能被100整除
(2)可以被400整除
代码执行如下:
import java.util.Scanner;
public class TestDemo{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入年");
int year=sc.nextInt();
System.out.println("请输入月份");
int month=sc.nextInt();
System.out.println("请输入日期");
int day =sc.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:
if((year%4==0&&year%100!=0)||year%400==0){
sumDays+=29;
}else {
sumDays+=28;
}
case 2:
sumDays+=31;
case 1:
sumDays+=day;
}
System.out.println(year+"年"+month+"月"+day+"日是当年的第"+sumDays+"天");
}
}
输入2020年5月21日执行如下:
输入2021年5月21日执行如下: