他希望用户输入成绩并为其分配一个字母等级. if语句很容易,但我不能使用任何东西!我必须使用切换方法.
这是我的功能类:
public class Grade { public double getGrade(int input) { double inputGrade; switch(input) { case 1: inputGrade >= 90; break; case 2: inputGrade >= 80; break; case 3: inputGrade >= 70; break; default: grade = 60; } return grade; } }
这是我的测试类:
import java.util.*; public class TestGrade { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int input = scan.nextInt(); Grade lGrade = new Grade(); double finalGrade = lGrade.getGradeSwitch(input); System.out.println("Your toll is $" + finalGrade); } }
我只是没有足够的编程来拥有这种分析思维.我试图完成它,我只是没有找到一种方法将用户输入(int)转换为没有if语句的字母等级(字符串).
我知道这是不完整的,但这是我可以走的,不会出错.
编辑:哇!谢谢大家,我讨厌选择一个正确答案,因为很多人帮助了我!
这就是我最终的结果(有效:D)
public String getGrade(int input) { String letterGrade; switch(input/10) { case 9: letterGrade = "A"; break; case 8: letterGrade = "B"; break; case 7: letterGrade = "C"; break; case 6: letterGrade = "D"; default: letterGrade = "F"; } return letterGrade; }
解决方法
如果不是这样,那么您在编程方面的第一课就是:编码中最重要的部分是清楚地写出规范和要求
话虽如此,有聪明而愚蠢的方法.
>愚蠢的方法:
>像现在一样使用“输入”上的开关
>由于值90,91 … 100都应该被视为相同,所以将它们全部放在单独的开关盒中,但只在最后一个中进行工作(称为直通; see SwitchDemo2 on this page for how that works)
>对于最后一个值(例如,如果从100开始并且向下,则为90),switch语句将为letterGrade =“A”;打破;
>一旦达到89的情况,你就会重复与100到90相同的逻辑
>泡沫,冲洗,重复,直到60
>将Fs作为默认情况处理.
这将是非常长的,相当愚蠢(如蛮力)和非常讨厌的写作,以及一个出色的教学工具,为什么你再也不想写愚蠢的代码,如果你能帮助它.
>更优雅的解决方案(在此插入适当的星球大战报价)
>你对“A”的所有相关人员之间的共同点是什么?
是的,事实是,除了100之外,它们都是以9开头的2-diit#.
因此,要在1个案例陈述中处理它们,那么为90和99之间的所有#s打开一些给你“9”的值不是很好吗?
我希望你马上知道答案…提示下面……
是的,只需将整数除以10!
因此,您需要将您的数字等级转换为10,
包含10,9,8,7,6的情况以及默认映射到F.
希望这能够为您提供足够的工作解决方案,同时展示分析如何运作.