输入成绩,判断成绩等级 if & switch
if语句判断方法:
import java.util.Scanner;
public class ScoreIf {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩");
int score = sc.nextInt();
score /= 10; //等價 score = score / 10;
if(0 <= score && score < 6){
System.out.println("不及格");
}else if(score == 6){
System.out.println("及格");
}else if(score == 7){
System.out.println("良好");
}else if(score == 8){
System.out.println("優秀");
}else if(score == 9){
System.out.println("蒂花之秀");
}else if(score == 10){
System.out.println("秀");
}else{
System.out.println("非法输入");
}
/*//除以10,可減少條件的判斷
if (0 <= score && score < 60){
System.out.println("不及格");
}else if( 60 <= score && score < 70){
System.out.println("及格");
}else if(70 <= score && score < 80){
System.out.println("良好");
}else if(80 <= score && score <= 90){
System.out.println("优秀");
}else if(90 <= score && score < 100){
System.out.println("棒棒哒");
}else if(score == 100){
System.out.println("That is so good!!");
}else{
System.out.println("非法输入");
}*/
}
}
.
.
switch方法判断:
public class score {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
int score = (int) (Math.random() * 101); // [0,100]
System.out.println("分数是:" + score);
score /= 10;
if (score < 6)
score = 0;
switch (score) {
case 0:
System.out.println("不及格");
break;
case 6:
System.out.println("及格");
break;
case 7:
System.out.println("良好");
break;
case 8:
System.out.println("优秀");
break;
case 9:
System.out.println("天秀");
break;
case 10:
System.out.println("蒂花之秀");
break;
default:
break;
}
}
}
}
switch语法结构:
switch(值){
case 值1: {}
//表达式的值是value1时的执行体-语句块1;
[break;]
case value2:{}
//表达式的值是value2时的执行体-语句块2;
[break;]
...
case valueN:{}
//表达式的值是valueN时的执行体-语句块N;
[break;]
[default:{}]
//上面条件都不满足时的执行体-语句块N+1;
}
说明:
1.switch小括号的值必须为byte,short,int,char和枚举类型,JDK1.7支持String类型;
2.每个case语句后的值必须是与值类型兼容的特定的一个常量(字面常量或者是final修饰的变量);
3.可以有多个case 但每个case语句后的值不允许重复;
4.default语句是可选语句;
5.break 关键字也是可选的 ;
执行流程:
先确定switch后小括号的值 ,用该值顺次与case对应的value值进行判断,一旦发现有相等的value值, 就停止比较并执行其对应的语句块;
与值相等的case后的语句块执行完毕之后 ,会跳到下一个case处 ,但不会再进行值的判断了 ,而是继续执行下个case后的语句块 ;也会执行default后的语句块 ;
如果所有的case的值都和switch的值不等 , 那么会执行default后的语句块 , 执行完毕后结束整个switch ; 如果没default ,则直接结束switch语句;
注意 : 在switch语句执行的过程中 , 无论是在那里遇到了 break ; 就会在执行到 break 的地方 结束整个 switch 语句 ;
.
备注:
if选择语句和switch选择语句的比较:
switch语句只支持常量值相等的分支判断,而if语句支持更为灵活,任意布尔表达式均可;
switch语句通常比一系列嵌套if语句效率更高;逻辑更加清晰
.
.
案例1:
import java.util.Scanner;
public class TestSwitch {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入1-7中任意一个数字");
int weekday = sc.nextInt();
switch(weekday){ //i只能是int short byte string enum
case 1 : {
System.out.println("Monday");
break;
}
case 2 : {
System.out.println("Tuesday");
break;
}
case 3 : {
System.out.println("Wednesday");
break;
}
case 4 : {
System.out.println("Thursday");
break;
}
case 5 : {
System.out.println("Friday");
break;
}
case 6 : {
System.out.println("Saturday");
break;
}
case 7 : {
System.out.println("Sunday");
break;
}
default : {
System.out.println("Your input number is wrong.");
}
}
}
}
案例2:
public class SeasonSwitch {
public static void main(String[] args){
int i = (int)(Math.random() * 12 + 1); //[0,12]
System.out.println("产生的数字:" + i);
switch(i){
case 12:
case 1:
case 2: System.out.println("寒冷的冬季");break;
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;
default :System.out.println("出现了未知错误");
}
System.out.println("main-gg");
}
}