如题所述
import java.util.Scanner;
public class DemoTest03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的成绩,按回车键确定...");
int grade = sc.nextInt();
char rank;
/*
确定成绩的范围,具体到数据
*/
if(grade >= 90) rank = 'S';
else if(grade >= 80) rank = 'A';
else if(grade >= 70) rank = 'B';
else if(grade >= 60) rank = 'C';
else rank = 'D';
/*
switch不能判断表达式
在JDK1.5之前,switch循环只支持byte short char int四种数据类型.
JDK1.5 在switch循环中增加了枚举类与byte short char int的包装类------》对四个包装类的支持是因为java编译器
在底层手动进行拆箱,而对枚举类的支持是因为枚举类有一个ordinal方法,该方法实际上是一个int类型的数值.
JDK1.7在switch循环中增加了String类型-------》但实际上String类型有一个hashCode算法,结果也是int类型.
而byte short char类型可以在不损失精度的情况下向上转型成int类型.所以总的来说,可以认为switch中只支持int.
*/
switch (rank) {
case 'S' :
System.out.println("优秀");
break;
case 'A' :
System.out.println("中");
break;
case 'B' :
System.out.println("良好");
break;
case 'C' :
System.out.println("及格");
break;
case 'D' :
System.out.println("不及格");
break;
default :
System.out.println("系统错误,不存在的等级!");
break;
}
}
}
public class DemoTest03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的成绩,按回车键确定...");
int grade = sc.nextInt();
char rank;
/*
确定成绩的范围,具体到数据
*/
if(grade >= 90) rank = 'S';
else if(grade >= 80) rank = 'A';
else if(grade >= 70) rank = 'B';
else if(grade >= 60) rank = 'C';
else rank = 'D';
/*
switch不能判断表达式
在JDK1.5之前,switch循环只支持byte short char int四种数据类型.
JDK1.5 在switch循环中增加了枚举类与byte short char int的包装类------》对四个包装类的支持是因为java编译器
在底层手动进行拆箱,而对枚举类的支持是因为枚举类有一个ordinal方法,该方法实际上是一个int类型的数值.
JDK1.7在switch循环中增加了String类型-------》但实际上String类型有一个hashCode算法,结果也是int类型.
而byte short char类型可以在不损失精度的情况下向上转型成int类型.所以总的来说,可以认为switch中只支持int.
*/
switch (rank) {
case 'S' :
System.out.println("优秀");
break;
case 'A' :
System.out.println("中");
break;
case 'B' :
System.out.println("良好");
break;
case 'C' :
System.out.println("及格");
break;
case 'D' :
System.out.println("不及格");
break;
default :
System.out.println("系统错误,不存在的等级!");
break;
}
}
}
温馨提示:答案为网友推荐,仅供参考