int rollnumber;
do {
try {
System.out.println("how many times");
rollnumber = scanner.nextInt();
nigh=2;
if (Integer.toString(rollnumber).equals("q") ) {
System.exit(0);
}
} catch (Exception e){
System.out.println("invalid. re-enter");
scanner.nextLine()';
}
}while (nigh==1);
基本上,我正在尝试制作一个“q”(退出)选项但是当我按q时它只是继续跳转到catch语句。帮助我做到这一点,以便“scanner.nextInt()”读取q作为实际的退出命令。
答案 0 :(得分:3)
您正尝试从控制台读取int
。如果您输入q
,nextInt
尝试将q
转换为整数,则会失败并显示NumberFormatException
并且代码会跳转到catch
块。
您应该使用next
或nextLine
阅读并将输入转换为int
。
答案 1 :(得分:0)
你可以用这种方式。阅读String
而不是int
。您可以使用nextLine()
然后
rollnumber = scanner.nextLine(); // read next line
if("q".equalsIgnoreCase(rollnumber)) // if it is q then if condition matched
答案 2 :(得分:0)
问题是.nextInt只会接受一个实际的int。您可以使用.next()方法而不是.nextInt()方法,然后检查它是否是" q"。如果不是,则可以检查它是否解析为Int,如果不解析,则使用catch块中的代码。
String rollnumber;
try {
System.out.println("how many times");
rollnumber = scanner.next();
nigh=2;
if (rollnumber.equals("q") ) {
System.exit(0);
} else {
int num = Integer.parseInt(rollnumber);
}
} catch (Exception e){
System.out.println("invalid. re-enter");
scanner.nextLine()';
}
答案 3 :(得分:-2)
将您的行更改为
int rollnumber;
nigh = 1; // added
do {
try {
System.out.println("how many times");
String response = scanner.nextLine(); // changed
rollnumber = scanner.nextInt();
nigh=2;
if(if("q".equalsIgnoreCase(response)){){ // changed
System.exit(0);
} else {
rollnumber = scanner.nextInt();
nigh=2;
}
}
catch (Exception e){
System.out.println("invalid. re-enter");
scanner.nextLine();
}
}while (nigh==1);