java - switch 语句的荒谬使用

标签 java switch-statement

我正在和我的 friend 做一些 Java 作业。讲师希望他编写一个 Java 程序,将整数输入转换为数字成绩。 100-90 = A 等等。唯一的问题是他必须使用 switch 语句。他还必须:

Include a case in your switch statement that will display a polite error message if the user enters any number less than 0 or greater than 100."

本来我就是这么想的...

import java.util.Scanner;
public class grade
{
    public static void main(String[] args)
    {
        int ng;//number grade
        String lg = "";//letter grade

        System.out.println("enter grade");

        Scanner in = new Scanner(System.in);

        ng = in.nextInt();

        switch (ng/10) 
        {
            case 10: 
            case 9:     
                lg = "A";  
                break;
            case 8:
                lg = "B";  
            break;
            case 7:     
                lg = "C";  
            break;
            case 6:     
                lg = "D";  
            break;
            default:     
                lg = "F";  
            break;
        }   
         System.out.println("You got an " + lg);
      }
}

这并不完美,因为它允许值超过 100 且低于 0,但我试图避免输入 100-0 之间的每个整数。这似乎是对 switch 语句的荒谬使用,我无法想象为什么大学教授会教它,除了说明 DRY 原则。

有没有更好的方法仍然使用 switch 语句,但不键入 100-0 之间的每个 int?

最佳答案

您始终可以向 switch 表达式添加一些较小的复杂性,以使情况更简单;这会将 90-100 计算为 1080-89 计算为 9 等等,101 及以上将变为 11 及以上,并且每个输入低于 0 的将变为 0 或负数,因此它们将属于默认值;

switch ((ng-ng/100+10)/10)
{
    case 10:
        lg = "A";
        break;
    case 9:
        lg = "B";
        break;
    case 8:
        lg = "C";
        break;
    case 7:
        lg = "D";
        break;
    case 6: case 5: case 4: 
    case 3: case 2: case 1:
        lg = "F";
        break;
    default:
        System.out.println("Polite Error");
        lg = "";
}

关于java - switch 语句的荒谬使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14847196/

相关文章:

c - 为什么这个 switch case 程序在整数输入之后不接受字符输入?

swift - 如何在 swift 中在两个以上 View 之间切换

c - 没有跳转表的switch语句

java - 菜单与开关的问题。当我输入我的选择时,它适用于所有 mu 开关

java - Java接口(interface)的switch语句

eclipse - 为什么Eclipse不需要我配置JDK?

java - 在没有源代码的情况下序列化为 JSON 时更改属性名称

java - 如何为 gtalk 创建一个搜索在线帮助 Java 的机器人?

java - 在 actionPerformed 方法中停止 Swing 计时器?

java - python 代码运行不正确,java 中也一样