出于某种原因,当我第一次执行do while循环时,扫描仪会要求输入两次



自从我创建了一个接受用户输入的方法以来,就一直是这样。以前,扫描仪处于循环中,但它导致了另一个小问题。我以前从未遇到过这个问题。。

    public static int input(){
    Scanner scan = new Scanner (System.in);
    int guess;
    guess = scan.nextInt();
    return(guess);
}
    public static void main(String[] args) {
    do{ 
        if (firstPromptIsPrinted){
        System.out.println("Enter a number between 1 and 20.");
        }
        guess = input();
        if (secondPromptIsPrinted){
            System.out.println("Nope ;). ");
        } 
        if (secondPromptIsPrinted){
            giveHint(guess, luckyNumber);
        }
        firstPromptIsPrinted = false; //Now
        secondPromptIsPrinted = true;
    } while (guess != luckyNumber);

我对它进行了一点重新组织,以摆脱静态输入法。。。这是有效的:我认为一个变化是System.out.println("否…")周围的if条件;。。。

public class GuessGame {
    Scanner scan = null;
    public GuessGame() {
        scan = new Scanner ( System.in );
    }
    public int input() {
        int ltheResult;
        ltheResult = scan.nextInt ();
        return ltheResult;
    }
    public static void main(String[] args) {
        GuessGame ltheClass = new GuessGame ();
        ltheClass.run ();
    }
    public void run () {
        int guess = 0;
        boolean firstPromptIsPrinted = true;
        boolean secondPromptIsPrinted = false;
        int luckyNumber = 10;
        do {
            if ( firstPromptIsPrinted ) {
                System.out.println ( "Enter a number between 1 and 20." );
            }
            guess = this.input ();
            if ( guess != luckyNumber ) {
                System.out.println ( "Nope ;). " );
            }
            // if (secondPromptIsPrinted){
            // giveHint(guess, luckyNumber);
            // }
            firstPromptIsPrinted = false; // Now
            secondPromptIsPrinted = true;
        }
        while ( guess != luckyNumber );
        System.out.println ( "Yes luckyNumber is [" + luckyNumber + "]" );
    }
}

最新更新