有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Switch语句,用于根据用户输入确定字母等级(十进制)

我的老师想让我使用switch语句,但我在计算学生的分数,本质上我想使用double,但我不能。程序应该要求用户输入,然后学生输入哪个数字(例如:92.99),根据教学大纲打印出字母分数。请帮忙! 此外,这已经不能正常工作了。它不会打印出字母等级。 这就是我到目前为止所做的:

public class calculate {

    private static String gradefinal;
    private static char grade;

    /**
     * @param args
     */
    public static void main(String[] args) 
    {
        // TODO Auto-generated method stub
    // variable declaration

        Scanner in = new Scanner(System.in);    //Input device scanner
        double finalgrade = 0.0; 

    // input 

        String first_name;              //Holds first name 
        System.out.print("Enter your first name: ");
        first_name = in.next();

        String last_name;               //Holds last name 
        System.out.print("Enter your last name: ");
        last_name = in.next();

        String major;                   //Holds user's major
        System.out.print("Enter your intended major: ");
        major = in.next();

        String ist;                     //Holds user's class number
        System.out.print("Enter the IST class you are in: ");
        ist = in.next();

        String final_grade;         //Holds user's letter grade
        System.out.print("Enter your final grade: ");
        final_grade = in.next();

        // process 



        if (finalgrade <= 59.99) 
        {
            grade = 'F';

        }
        else if (finalgrade >= 90.00)
        {
            grade = 'A';
        }
        else if ((finalgrade <= 89.99) && (finalgrade >= 79.99))
        {
            grade = 'B';
        }
        else if ((finalgrade <= 79.99) && (finalgrade >= 69.99))
        {
            grade = 'C';
        }   
        else if ((finalgrade <= 69.99) && (finalgrade >= 60.00))
        {
            grade = 'D';
        }

    //output    
        System.out.printf("First Name: %s\nLast Name: %s\nIntended Major: %s\nIST Class: %s\nYour final grade is: %s\nfinal letter grade: %s",first_name, last_name, major, ist, final_grade, grade);

    }

}

共 (3) 个答案

  1. # 1 楼答案

    正如您所了解的,开关中不能使用double

    The Switch Statement

    Unlike if-then and if-then-else statements, the switch statement can have a number of possible execution paths. A switch works with the byte, short, char, and int primitive data types. It also works with enumerated types (discussed in Enum Types), the String class, and a few special classes that wrap certain primitive types: Character, Byte, Short, and Integer (discussed in Numbers and Strings).

    一个选项是将double自动装箱到^{}中,然后获取其int值:

    Integer i = d.intValue();
    
  2. # 2 楼答案

    好的,这是家庭作业,所以我会尽量减少代码

    我认为这里有几个选项,这取决于你可以使用什么

    1)我认为最简单的选择是将double“转换”为字符串,并使用带有字符串第一个字符的switch语句。所以如果它以9开头,它将是a,因为你不是在计算a+/a——看起来是这样

    2)可以四舍五入到最近的十位,将double转换为int,并将switch语句与int一起使用。这样你只需要检查4个数字。在这里default将是你的朋友

  3. # 3 楼答案

    把它绕到最近的10秒处,把它变成一根绳子,然后打开绳子:

    String gradePercent = Math.round(finalGrade/10).toString();
    switch (gradePercent) {
        "6" : grade = "D"; break;
        "7" : grade = "C"; break;
        "8" : grade = "B"; break;
        "9" : "10" : grade = "A"; break;
        default: grade = "F";
    }