一.根据成绩输出对应的等级,使用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处理多分支语句代码更繁复。