3

我编写了一个程序,询问用户一个数字,然后检查它是否等于、小于或大于随机数。一个简单的猜谜游戏。它工作得很好,但我想在与输入相同的行上显示输出,但我不知道如何做到这一点。

Ok, I've picked a number between 1 and 100. What is your first guess?
Guess 1: 36
<
Guess 2: 50
>
Guess 3: 46
That is correct. The hidden number is 46.

这就是我希望它的样子:

Guess 1: 36 <
Guess 2: 50 >
Guess 3: 46 That is correct. The hidden number is 46.

我该怎么做呢?当我使用时,光标在输入后向下移动Scanner.nextInt();

这是我当前的代码:

while (!isCorrect) {
        System.out.print("Guess " + guessCount + ":  ");
        currentGuess = input.nextInt();

        if (currentGuess == randomNumber) {
            isCorrect = true;
            System.out.println("That is correct. The hidden number was " + randomNumber);
        }
        else if (currentGuess > randomNumber) {
            System.out.println(" >");
            ++guessCount;
        }
        else if (currentGuess < randomNumber) {
            System.out.println(" <");
            ++guessCount;
        }

    }
4

3 回答 3

0

你能做到的最好的事情就是重新回显输入。

while (!isCorrect) {
    System.out.print("Guess " + guessCount + ":  ");
    currentGuess = input.nextInt();

    if (currentGuess == randomNumber) {
        isCorrect = true;
        System.out.println("That is correct. The hidden number was " + randomNumber);
    }
    else if (currentGuess > randomNumber) {
        System.out.println(currentGuess  + " >");
        ++guessCount;
    }
    else if (currentGuess < randomNumber) {
        System.out.println(currentGuess  + " <");
        ++guessCount;
    }

}

对于输出:

猜一猜:36
36 <
猜测2:50
50 >
猜测 3:46
那是对的。隐藏的数字是46。
于 2013-08-12T21:47:25.733 回答
0

如果你真的需要像这样格式化你的输出,你可以尝试将你的输入保存到一个数组列表中,清除屏幕,然后再次将所有先前的输入打印到屏幕上。

List<Integer> foo = new ArrayList<Integer>();

while (!isCorrect) {
    System.out.print("Guess " + guessCount + ": ");
    guessCount++;
    currentGuess = input.nextInt();
    foo.add(currentGuess);
    for(int a = 0; a < 50; a++) {
        System.out.println('\n');
    }
    for(int i = 0; i < foo.size(); i++) {
        currentGuess = foo.get(i);
        System.out.print("Guess " + (i+1) + ": " + currentGuess);
        if (currentGuess == randomNumber) {
            isCorrect = true;
            System.out.println(" That is correct. The hidden number was " + randomNumber);
        }
        else if (currentGuess > randomNumber) {
            System.out.println(" >");
            }
        else if (currentGuess < randomNumber) {
            System.out.println(" <");
        }
    }
}

为了清除屏幕,我只打印了 50 个空白行。

这里提出了一个清除控制台的解决方案: Java: Clear the console 然而,它对我或 Chris 不起作用。

于 2013-08-12T22:59:48.760 回答
0

这并不总是可能的。您可以尝试回\b显退格字符,但这可能行不通。一旦用户键入新行,就无法将其删除。

于 2013-08-12T21:38:39.743 回答