一.根据成绩输出对应的等级,使用if多分支和switch语句分别实现。 a)A级 [90,100] b)B级 [80,90) c)C级 [70,80) d)D级 [60,70) e)E级 [0,60) (一)switch语句 1、思考 (1)首先拿到题目就看到用switch语句实现,而要匹配的却不是一个数 而是一个范围。 然后就想办法将范围缩小到一个值,想到整除和取余运算, 而取余在这里却不好使用,于是便用整除运算。 (2)经过整除运算,由题:case 10和case 9都是A级,便想着如何简化代码, 尝试用||即case 10||9,发现系统虽然不会报错, 但会直接跳到default;尝试了许多方法,还是用case 10:case 9: 最为简便。 (3)想让代码更严谨,于是采用了while+if语句当输入大于100和小于0的数时: 会报错,并能够重新输入。 2、代码:
import java.util.Scanner;
public class HomeWork02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean flag = true;
//实现成绩输入有误,重新输入操作
while (flag) {
System.out.println("请输入成绩:");
int grade = sc.nextInt();
if (grade > 100 || grade < 0) {
System.out.println("成绩输入有误,请重新输入!");
continue;
}
switch (grade / 10) {
case 10 :case 9 :
System.out.println("您的成绩是A级");
break;
case 8:
System.out.println("您的成绩是B级");
break;
case 7:
System.out.println("您的成绩是C级");
break;
case 6:
System.out.println("您的成绩是D级");
break;
default:
System.out.println("您的成绩是E级");
break;
}
break;
}}}
(二)if分支语句
1、思考总结
(1)if分支语句很容易写出很多“is always true”的代码,
一般是从第二条语句开始,大部分是因为上一条语句已经
缩小了题中范围,如:
上一句中有了:if (grade > 100 || grade < 0)
下一句:if (grade >= 90)就已经足够,没必要加上
grade<=100
(2)想让代码更严谨,于是采用了while+if语句当输入大于100和小于0的数时:
会报错,并能够重新输入。记得break。
2、代码: */
import java.util.Scanner;
public class HomeWork02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean flag = true;
//实现成绩输入有误,重新输入操作
while (flag) {
System.out.println("请输入成绩:");
int grade = sc.nextInt();
if (grade > 100 || grade < 0) {
System.out.println("成绩输入有误,请重新输入!");
continue;
}
if (grade >= 90) {
System.out.println("您的成绩是A级");
}
else if (grade >= 80 ) {
System.out.println("您的成绩是B级");
}
else if (grade >= 70 ) {
System.out.println("您的成绩是C级");
}
else if (grade >= 60 ) {
System.out.println("您的成绩是D级");
}
else {
System.out.println("您的成绩是E级");
}
break;}}}
二、switch语句与if多分支语句的相同与不同 1、相同点:都能进行多分支情况的处理 2、不同点:switch 更适合用于多分支情况, 就是有很多种情况需要判断处理,判断条件类型单一,只有一个入口, 在分支执行完后(如果没有 break 跳出),不加判断地执行下去; 而 if多分枝主要适用于分支较少的分支结构,判断类型不是单一, 只要一个分支被执行后,后边的分支不再执行。 总结:switch 更适合多分支但不灵活 if多分支很灵活但相对于switch处理多分支语句代码更繁复。