这是我的第一篇文章,所以我不确定格式,也没有包含完整的程序(如果需要,我可以)我正在编写一个程序,在该程序中我想在一种方法中使用扫描仪,该方法的工作是接收一个数字,检查其有效性,如果它无效,则递归并接收一个新数字。当我运行它时,扫描仪打开,获取号码,然后给我错误:线程“main”中的异常 java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:862) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt( Scanner.java:2117) 在 java.util.Scanner.nextInt(Scanner.java:2076) 在 Password.getGuess(Password.java:26) 在 Password.checkPassword(Password.java:46) 在 Password.getGuess(Password.getGuess(Password.java:26) java:35) 在 Password.checkPassword(Password.java:46) 在 Password.main(Password.java:7)public static int getRange(){ int range = (int) Math.pow(10, difficulty); return range;}public static int getGuess() { Scanner in = new Scanner(System.in); System.out.println("ENTER PASSWORD_"); int guess = in.nextInt(); in.close(); if (guess > (getRange() - 1) || guess < (getRange() / 10 )) { System.out.println("ERROR: INVALID_PASSWORD"); return getGuess(); } else { checkPassword(); return guess; }}
1 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
尝试这样的事情:
boolean validInput = false;
while(!validInput)
{
System.out.println("ENTER PASSWORD_");
int guess = in.nextInt();
if (guess > (getRange() - 1) || guess < (getRange() / 10 ))
{
System.out.println("ERROR: INVALID_PASSWORD");
}
else
{
// this will cause your input loop to terminate
validInput = true;
}
}
checkPassword();
添加回答
举报
0/150
提交
取消