如何使用switch()语句将数字转换为字母等级?

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)

DVK*_*DVK 6

好吧,我的假设是你将输入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作为默认情况处理.

这将是非常长的,相当愚蠢(如蛮力)和非常讨厌的写作,以及一个出色的教学工具,为什么你不想再写一个愚蠢的代码,如果你可以帮助它.

  • 更优雅的解决方案(在这里插入适当星球大战报价)

    • 你对"A"的相应对象之间的共同点是什么?

    是的,事实是,除了100之外,它们都是以9开头的2-diit#.

    因此,要在1个案例陈述中处理它们,那么为90和99之间的所有#s打开一些给你"9"的值是不是很好?

    我希望你马上知道答案...提示下面......

    是的,只需将整数除以10!

    因此,您需要将您的数字等级转换为10,其中包含10,9,8,7,6和默认映射到F的情况.

希望这足以为您提供足够的工作解决方案,同时展示分析如何运作.