【发布时间】:2014-03-08 16:44:39
【问题描述】:
我有这个学校作业,我想通过合并一个 do 循环来进一步完成它,但它并没有按照预期的方式工作。我试图让它重复整个程序,直到输入正确,比如说如果有人输入一个字符串而不是一个整数,那么它会重复这个程序。
我该怎么做?
请不要提供更好的方法来编写这个程序,因为它是教师正在寻找的。我知道有更好的方法来编写它,因为我已经这样做了。
public class Grade {
public static void main(String[] args) {
ConsoleReader console = new ConsoleReader(System.in);
int i = 1;
do {
System.out.println("Enter your grade percentage:");
int percent = (int) console.readDouble();
Math.round(percent);
percent = (int) percent / 10;
String grade ="Input was not valid";
if(percent <= 5){
grade = "Your grade is an F, Work Harder so you won't have to retake!";
System.out.println(grade);
i = 9999999;
}else{
switch (percent){
case 6:
grade = "Your grade is a D, work harder";
System.out.println(grade);
i = 9999999;
break;
case 7:
grade = "Your grade is a C, That's average but you could do better.";
System.out.println(grade);
i = 9999999;
break;
case 8:
grade = "Your grade is a B, That is pretty good but strive for that A";
System.out.println(grade);
i = 9999999;
break;
case 9:
grade = "Your grade is a A, Good Work!!";
System.out.println(grade);
i = 9999999;
break;
case 10:
grade = "Your grade is a A, Good Work!!";
System.out.println(grade);
i = 9999999;
break;
default:
grade = "Your input was invalid, Please enter your grade percentage.";
System.out.println(grade);
i++;
break;
}
}
}while(i != 9999999);
}
}
【问题讨论】:
-
整数除法警告!警告!传值警告!这是你应该研究的两件事。
-
如果用户输入了不正确的数据,那么它会抛出异常而你根本没有捕捉到它
-
预期的行为究竟是什么?顺便说一句,你为什么要舍入一个 int?
-
是的,如果你输入字符串而不是整数,它应该抛出异常
-
尝试调试它,例如通过 System.out.println 输出 i 值或设置一些断点