我正在编写一个简单的程序,用户输入一个学生的班级编号(cn)和该学生的班级(ngrade)。我试图添加一个异常,检查cn和ngrade的输入是否为整数。如果不是,将通知用户它无效并要求重新输入详细信息。
问题:我确实使用while循环来检查整个循环中的输入。但是我得到了一个无限循环。
CODE:
import java.io.*;
import java.util.*;
public class trrying {
public static void main(String[] args) {
int ngrade;
int cn;
int A = 0, B = 0, C = 0, D = 0, E = 0;
boolean test = false;
Scanner sn = new Scanner(System.in);
while (!test) {
try {
for (int i = 0; i <= 2; i++) {
System.out.println("Enter class number: ");
cn = sn.nextInt();
System.out.println("Enter numeric grade: ");
ngrade = sn.nextInt();
System.out.println("Letter Grade: ");
if (ngrade >= 90) {
A++;
System.out.println("A");
} else {
System.out.println("HELLO");
}
test = true;
}
test = false;
} catch (Exception e) {
System.out.println("ERROR! ");
// System.out.println("Enter class number: ");
}
}
}
}
答案 0 :(得分:-2)
获得所需行为的一个选项是使用Scanner#nextLine()
将每个输入作为字符串读入,然后手动尝试将该输入解析为整数。如果成功,接受该输入并继续您的逻辑。如果不成功,则捕获异常,并重复循环以获得另一个用户输入。
for (int i=0; i <= 2; i++) {
String line = "";
while (true) {
System.out.println("Enter class number: ");
line = sn.nextLine();
try {
cn = Integer.parseInt(line);
break;
} catch(Exception e) {
System.out.println("Enter class number as an integer only.");
}
}
while (true) {
System.out.println("Enter numeric grade: ");
line = sn.nextLine();
try {
ngrade = Integer.parseInt(line);
break;
} catch(Exception e) {
System.out.println("Enter numeric grade as an integer only.");
}
}
System.out.println("Letter Grade: ");
if (ngrade >= 90) {
System.out.println("A");
}
else {
System.out.println("HELLO");
}
test = true;
}