切换语句以确定用户输入的字母等级(十进制)

时间:2015-10-07 18:52:04

标签: java

我的导师要我使用开关声明,但是我计算学生的成绩并且本质上我会考虑使用双,但我不能。程序应该询问用户输入,然后输入学生输入的数字(例如: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 个答案:

答案 0 :(得分:1)

好的,这是作业,所以我会将代码保持在最低限度。

我认为这里有一些选择,这一切都取决于您允许使用的内容。

1)我认为最简单的选择是将double“转换”为String,并使用带有String的第一个字符的switch语句。因此,如果它以9开头,它将成为A,因为你似乎没有计算A + / A-。

2)你可以向下舍入到最接近的十位,并将双精度转换为int,并使用带有int的switch语句。这样你只需要检查4个数字。 default将是您的朋友。

答案 1 :(得分:0)

如您所知,double无法在交换机中使用。

The Switch Statement

  

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

一种选择是将double自动装箱到Double,然后获取其int值:

Integer i = d.intValue();

答案 2 :(得分:0)

将它舍入到最近的10s位置,将其转​​换为字符串,然后打开字符串:

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";
}