2013-08-12 3 views
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; 
     } 

    } 

ответ

0

Это не всегда возможно. Вы можете попробовать повторить символ backspace \b, но это, вероятно, не сработает. Когда пользователь набирает новую строку, нет способа снять ее.

+0

Это не сработало, но спасибо за то, что я боялся :). Думаю, мне придется каким-то образом найти способ. –

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; 
    } 

}

для вывода:

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

Да, это выглядит немного лучше, чем раньше. –

1

Если вам действительно нужно форматировать ваш вывод, как, что вы могли бы попробовать сохранить введенные данные на ArrayList, очистка экрана, то печать всех предыдущих входов в снова.

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 Однако это не сработало для меня или Криса.

+0

Runtime.getRuntime(). Exec ("cls"); не работает во всех системах Windows. Мой Windows 7 x64 просто игнорирует его. –

+0

Вы правы, я тоже попробовал это на Windows 8 x64, и это породило некоторые ошибки. Я нашел его здесь http://stackoverflow.com/questions/2979383/java-clear-the-console –

+0

Это похоже на лучшее решение моей проблемы. Очистка консоли тоже не работала для меня. –

Смежные вопросы