如何在该程序中递归调用扫描仪?

这是我的第一篇文章,所以我不确定格式,也没有包含完整的程序(如果需要,我可以)


我正在编写一个程序,在该程序中我想在一种方法中使用扫描仪,该方法的工作是接收一个数字,检查其有效性,如果它无效,则递归并接收一个新数字。


当我运行它时,扫描仪打开,获取号码,然后给我错误:


线程“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;

    }

}


动漫人物
浏览 111回答 1
1回答

繁华开满天机

尝试这样的事情:boolean validInput = false;while(!validInput){&nbsp; &nbsp; System.out.println("ENTER PASSWORD_");&nbsp; &nbsp; int guess = in.nextInt();&nbsp; &nbsp; if (guess > (getRange() - 1) || guess < (getRange() / 10 ))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("ERROR: INVALID_PASSWORD");&nbsp; &nbsp; }&nbsp; &nbsp; else&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; // this will cause your input loop to terminate&nbsp; &nbsp; &nbsp; &nbsp; validInput = true;&nbsp; &nbsp; }}checkPassword();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java