我的导师要我使用开关声明,但是我计算学生的成绩并且本质上我会考虑使用双,但我不能。程序应该询问用户输入,然后输入学生输入的数字(例如: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);
}
}
答案 0 :(得分:1)
好的,这是作业,所以我会将代码保持在最低限度。
我认为这里有一些选择,这一切都取决于您允许使用的内容。
1)我认为最简单的选择是将double“转换”为String,并使用带有String的第一个字符的switch语句。因此,如果它以9开头,它将成为A,因为你似乎没有计算A + / A-。
2)你可以向下舍入到最接近的十位,并将双精度转换为int
,并使用带有int
的switch语句。这样你只需要检查4个数字。 default
将是您的朋友。
答案 1 :(得分:0)
如您所知,double
无法在交换机中使用。
与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";
}