我和朋友一起做了一些Java作业。教师希望他编写一个Java程序,将整数输入转换为数字等级。 100-90 = A等等。唯一的问题是他必须使用switch语句。他还必须:
在switch语句中包含一个将显示礼貌的案例 如果用户输入任何小于0或更大的数字,则会显示错误消息 超过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的每个整数。这似乎是对开关陈述的荒谬使用,我无法想象为什么大学教授会教它,除了说明 DRY 原则。
还有更好的方法仍然使用switch语句,但是不能从100-0输入每个int吗?
答案 0 :(得分:1)
您总是可以为切换表达式添加一些小的复杂性,以使案例更简单;这会计算90-100 as 10
,80-89 as 9
等等,101 and above will become 11 and above
和每个输入below 0 will become 0 or negative
,因此它们将属于默认值;
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 = "";
}
答案 1 :(得分:0)
怎么样:
String lg = null;
switch (ng/10)
{
case 10:
if (ng > 100) {
// polite error
break;
}
case 9:
lg = "A"
break;
case 8:
lg = "B";
break;
case 7:
lg = "C";
break;
case 6:
lg = "D";
break;
default:
if (ng < 0) {
// polite error
break;
}
lg = "F";
break;
}
在switch
之后,您必须检查是否设置了成绩。
if (lg == null) {
System.out.println("The input score was > 100 or < 0");
} else {
System.out.println("You got an " + lg);
}
答案 2 :(得分:0)
是的,你不想在地狱中实际使用switch语句。但你提出的方式是关于我能想到的最佳方式。
我会默认为错误情况,因为那可能是任何小于0或大于100的整数。在0到100之间,至少你有一定数量的情况(尽管你必须重复“F”案几次)。
答案 3 :(得分:0)
很好地使用整数除法;)
好吧,这段代码正式让我感到尴尬,让我哭泣。但在这里,只需使用switch语句。
import java.util.Scanner;
public class grade
{
public static void main(String[] args)
{
int ng;//number grade
String lg = "";//letter grade
boolean error = false;
System.out.println("enter grade");
Scanner in = new Scanner(System.in);
ng = in.nextInt();
switch (ng/10)
{
case 10:
switch (ng)
{
case 100:
lg = "A";
break;
default:
error = false;
break;
}
break;
case 9:
lg = "A";
break;
case 8:
lg = "B";
break;
case 7:
lg = "C";
break;
case 6:
lg = "D";
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
lg = "F";
break;
default:
error = true;
break;
}
if (error) {
System.out.println("Sorry, the grade must be between 0 and 100");
} else {
System.out.println("You got an " + lg);
}
}
}
布莱什。