do {
try {
System.out.println("how many times");
stringy = scanner.next();
rollnumber = Integer.parseInt(stringy);
if (stringy.equals("q")){
System.exit(0);
}
nigh = 2;
} catch (Exception e) {
System.out.println("invalid. re-enter");
scanner.nextLine();
}
} while (nigh == 1);
我不确定我做错了什么。它应该读取字符串,但它显然没有在system.exit中注册它。请向我解释一下,例子会很好!谢谢!
答案 0 :(得分:5)
它永远不会达到检查" q"的条件,因为它会在parseInt中出现异常。
如果键入" q",parseInt会在检查" q"的条件之前抛出NumberFormatException。
您应该将rollnumber= Integer.parseInt(stringy);
行移至条件之后。
我的建议(没有System.exit()
):
boolean quit = false;
do {
try {
System.out.println("how many times");
stringy= scanner.next();
if (stringy.equals("q")) {
quit = true;
} else {
rollnumber= Integer.parseInt(stringy);
}
}
catch (Exception e)
{
System.out.println("invalid. re-enter");
scanner.nextLine();
}
} while (!quit);
答案 1 :(得分:-2)
我认为当您尝试退出应用时,您不会退出while循环。也许您可以尝试在尝试退出应用程序后在if中添加return语句。
答案 2 :(得分:-2)
试试这个:
do {
try {
System.out.println("how many times");
stringy = scanner.next();
if (stringy.equals("q")){
System.exit(0);
}
rollnumber = Integer.parseInt(stringy);
nigh = 2;
}catch (Exception e) {
System.out.println("invalid. re-enter");
scanner.nextLine();
}
} while (nigh == 1);