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