Phi*_*hil 7 java switch-statement
这不是家庭作业,但是老师给我们帮助学习考试是一种做法.但我不会把它转交给老师.(我希望这是允许的)
他希望用户输入成绩并为其分配一个字母等级.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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试类:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我只是没有足够的编程来拥有这种分析思维.我试图完成它,我只是没有找到一种方法将用户输入(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;
}
Run Code Online (Sandbox Code Playgroud)
好吧,我的假设是你将输入0-100的数字等级,并且你想要的字母等级为"90-100:A; 80-89:B; ......; 60-69:D; 0- 59:F".
如果情况并非如此,那么您在编程方面的第一课就是:编码中最重要的部分是明确写出规范和要求
话虽如此,有聪明而愚蠢的方法.
愚蠢的方法:
像现在一样使用"输入"上的开关
由于值90,91 ... 100都应该被视为相同,所以将它们全部放在单独的开关盒中,但只在最后一个中进行工作(称为直通; 请参阅本页的SwitchDemo2,了解其如何工程)
对于最后一个值(例如,如果从100开始并且向下,则为90),switch语句将为letterGrade ="A"; 打破;
一旦你达到89的情况,你重复与100到90相同的逻辑
泡沫,冲洗,重复,直至60
将Fs作为默认情况处理.
这将是非常长的,相当愚蠢(如蛮力)和非常讨厌的写作,以及一个出色的教学工具,为什么你不想再写一个愚蠢的代码,如果你可以帮助它.
更优雅的解决方案(在这里插入适当星球大战报价)
是的,事实是,除了100之外,它们都是以9开头的2-diit#.
因此,要在1个案例陈述中处理它们,那么为90和99之间的所有#s打开一些给你"9"的值是不是很好?
我希望你马上知道答案...提示下面......
是的,只需将整数除以10!
因此,您需要将您的数字等级转换为10,其中包含10,9,8,7,6和默认映射到F的情况.
希望这足以为您提供足够的工作解决方案,同时展示分析如何运作.