【发布时间】:2013-02-13 05:47:55
【问题描述】:
我正在和我的朋友一起做一些 Java 作业。讲师希望他编写一个 Java 程序,将整数输入转换为数字等级。 100-90 = A 等等。唯一的问题是他必须使用 switch 语句。他还必须:
在你的 switch 语句中包含一个会显示礼貌的 case 如果用户输入任何小于 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 中的每个整数。这似乎是对 switch 语句的荒谬使用,我无法想象为什么大学教授会教它,除了说明 DRY 原则。
有没有更好的方法,仍然使用 switch 语句,但不键入从 100-0 开始的每个 int?
【问题讨论】:
-
你的方法看起来不错。为什么不直接将 switch 包装在
if语句中,以检查ng >= 0 && ng <= 100是否存在? -
我会,但要求是将测试放在 switch 语句中。我知道这很愚蠢。
-
使用 switch 语句的目的是让学生了解 switch 语句是如何工作的......以及一些让它更好地工作的技巧(比如你的范围缩小技巧)。这个例子对你来说可能看起来很荒谬......但这完全不是重点。
-
@StephenC 教学生识别适合工作的工具不是最好吗?如果我在教某人使用锤子,我会让他们泡一杯茶,这样他们就可以获得握锤子的经验。但你是对的,这是题外话
-
另一件事是你需要小心你在帮助他..而不是(有效地)为他做功课。除了道德之外,考虑到练习的重点是让他学习实用的编程技能。如果他能完成所有的工作,他会更好地学习它们。此外,如果他仍在努力学习 Java 语句的基础知识,请考虑您在 DRY 原则、执行 XYZ 的最佳方式等方面学到的所有建议将直接进入另一只耳朵 .
标签: java switch-statement