输入分数,判断优(90-100)良(80-90)中(60-70)差(小于60) switch

10、java用户输入分数,判断优(90-100)良(80-90)中(60-70)差(小于60),小于0,大于100提示“输入有误”,使用switch实现。使用if不是更简单么,使用switch是不是要写很多个case什么的

if判断范围简单一些,switch也行

      public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入分数: ");
        int score = scanner.nextInt();
        if (score < 0 || score > 100) {
            System.out.println("输入有误!分数应在0到100之间。");
        } else {
            int grade = score / 10;
 
            switch (grade) {
                case 10:
                case 9:
                    System.out.println("优");
                    break;
                case 8:
                    System.out.println("良");
                    break;
                case 7:
                    System.out.println("中");
                    break;
                default:
                    System.out.println("差");
                    break;
            }
        }
    }
 
 
 
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: Java基础面试题中的 9、if和switch的异同之处 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    相同之处:

    都是分支语句,多超过一种的情况进行判断处理

    不同之处:

    switch更适合多分支情况,判断条件单一,只有一个入口,在分支执行完之后,如果没有break跳出,不加判断的执行下去;而if–elseif—else多分支主要适用于分支比较少的结构,判断类型不是单一,只要一个分支被执行后,后边的分支不再执行。

    switch为等值判断,不允许加>=,<=,而if为等值和区间都可以,if的使用范围更大。

  • 以下回答来自chatgpt:

    使用switch语句对用户输入的分数进行判断,并输出对应的评价等级(优、良、中、差)的解决方案

    // 先获取用户输入的分数
    var score = prompt('请输入您的分数:');
    
    // 将分数转成数字类型
    score = Number(score);
    
    // 判断分数是否在0-100之间
    if (isNaN(score) || score < 0 || score > 100) {
      console.log('输入有误');
    } else {
      // 如果分数正确则根据不同分数区间进行评价等级的输出
      switch (Math.floor(score / 10)) {
        case 10:
        case 9:
          console.log('优');
          break;
        case 8:
          console.log('良');
          break;
        case 7:
          console.log('中');
          break;
        default:
          console.log('差');
          break;
      }
    }
    

    以上代码中,首先获取用户输入的分数并将其转成数字类型。然后对于分数的范围进行判断,如果不在0-100(包含0和100)之间,则输出“输入有误”,否则通过switch语句判断分数属于哪个区间,进而输出对应的评价等级。由于这里是根据10分为一个区间进行判断的,因此用Math.floor(score / 10)获取到分数属于哪个区间。最后使用console.log()输出对应的评价等级即可。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

是的,但是题目就是这么要求的
一个思路就是对分数 - 1 % 10,然后
case 9:
...
case 8:
...

import java.util.Scanner;

public class Program {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入分数:");
        int score = scanner.nextInt();

        int adjustedScore = (score - 1) % 10; // 对输入的分数进行调整

        String grade;
        switch (adjustedScore) {
            case 9:
            case 8:
                grade = "优";
                break;
            case 7:
                grade = "良";
                break;
            case 6:
                grade = "中";
                break;
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            case 0:
                grade = "差";
                break;
            default:
                grade = "输入有误";
                break;
        }

        System.out.println("等级是:" + grade);
    }
}