Java 用于根据用户输入确定字母等级的开关语句(十进制)

Java 用于根据用户输入确定字母等级的开关语句(十进制),java,Java,我的老师希望我使用switch语句,但我在计算学生的分数,从本质上说,我想使用double语句,但我不能。程序应要求用户输入,然后根据学生输入的数字(例如:92.99),根据教学大纲打印出字母分数。请帮忙! 此外,这已经不能正常工作了。它不会打印出字母等级。 这就是我到目前为止所做的: public class calculate { private static String gradefinal; private static char grade; /**

我的老师希望我使用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);

    }

}
公共类计算{
私有静态字符串;
私有静态字符级;
/**
*@param args
*/
公共静态void main(字符串[]args)
{
//TODO自动生成的方法存根
//变量声明
扫描仪输入=新扫描仪(System.in);//输入设备扫描仪
双最终等级=0.0;
//输入
String first_name;//保存名字
System.out.print(“输入您的名字:”);
first_name=in.next();
字符串last_name;//保存姓氏
System.out.print(“输入您的姓氏:”);
last_name=in.next();
String major;//保存用户的主要
System.out.print(“输入您的预期专业:”;
major=in.next();
字符串ist;//保存用户的类号
System.out.print(“输入您所在的IST类:”;
ist=in.next();
字符串final_grade;//保存用户的字母等级
System.out.print(“输入您的最终成绩:”);
最终等级=英寸下一级();
//过程
如果(最终等级=90.00)
{
等级=‘A’;
}
否则如果((最终等级=79.99))
{
等级=‘B’;
}
否则如果((最终等级=69.99))
{
等级=‘C’;
}   
否则,如果((最终等级=60.00))
{
等级='D';
}
//输出
System.out.printf(“名字:%s\n姓氏:%s\n终止专业:%s\nIST类别:%s\n您的最终成绩是:%s\n最终字母成绩:%s”,名字,姓氏,专业,ist,最终成绩,成绩);
}
}

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

与if-then和if-then-else语句不同,switch语句可以 有许多可能的执行路径。一个开关与一个开关一起工作 byte、short、char和int基元数据类型。它也适用于 枚举类型(在枚举类型中讨论)、字符串类和 很少有特殊类包装某些基本类型:Character, 字节、短字符和整数(在数字和字符串中讨论)

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

Integer i = d.intValue();

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

我认为这里有一些选择,这完全取决于你被允许使用什么

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


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

将其旋转到最近的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";
}

此外,这也不能正常工作。它不打印字母等级。考虑通过你的问题直接添加任何附加的评论,通过下面的“编辑”链接。可能是重复的,但不是正面的。我相信其中的一些答案可能是您的解决方案:这可能会有所不同,因为我试图让我的程序打印出一个字母等级(字符串或字符),由用户在系统中输入的数字等级(双精度)决定;我现在就试试。