我正在和我的 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 计算为 10
,80-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/