我是Java的新手,请原谅我。我正在写一个小小的猜猜游戏程序。
import java.util.Scanner;
公共课GuessingGame {
static Scanner userInput = new Scanner(System.in);
public static void main(String[] args) {
int menuOption;
// Main Screen //
System.out.println("Guessing Game");
System.out.println("---------------------");
System.out.println("1.) Play Game");
System.out.println("2). Exit");
System.out.println();
while (true) {
System.out.print("Please select a menu option: ");
menuOption = userInput.nextInt();
if (menuOption == 2) {
System.out.println("Exiting the game. Thanks for playing!");
break;
} else if (menuOption == 1) {
System.out.println("Let's start the game!");
getRandomRange();
} else {
System.out.println("Sorry, that's not a valid option. Please try again.");
continue;
}
}
}
/**
* Determine the range of numbers to work with
*/
public static void getRandomRange() {
int min;
int max;
System.out.print("Choose a minimum number: ");
min = userInput.nextInt();
System.out.print("Choose a maximum value: ");
max = userInput.nextInt();
getRandomNumber(min, max);
}
public static void getRandomNumber(int min, int max) {
int randomNumber = (int) (Math.random() * (max - min + 1)) + min;
getAGuess(min, max, randomNumber);
}
public static void getAGuess(int min, int max, int randomNumber) {
int guess;
while (true) {
System.out.print("Guess a number between " + min + " and " + (max) + ": ");
guess = userInput.nextInt();
if (guess == randomNumber) {
System.out.println("Correct! The random number is: " + randomNumber);
break;
}
}
}
}
当我提示用户猜测一个数字并且数字不正确时,我希望能够立即刷新输入流并在同一行输入另一个猜测。
例如: 猜一个0到5之间的数字:我只在这一行输入我的猜测。
我可以将打印输出循环但在这种情况下,如果我输入一个inccorect数字,光标会跳转到下一行。
希望这是有道理的。谢谢!
答案 0 :(得分:1)
如果你的目标只是清除控制台,那么你可以这样做:
Runtime.getRuntime().exec("cls");
或者如果您使用的是Linux或OS X:
Runtime.getRuntime().exec("clear");
现在,如果你添加了你想要保留的上一行,你需要保留一个数组并在每次清除后重新打印。
这在IDE中无效。
如果您想要一种更独立于系统的方式,那么有一个名为JLine
(GitHub)的库,它旨在更好地使用控制台。它实际上包含一个方法clearScreen
。
你也可以这样做:
System.out.print("\033[H\033[2J");
这将清除屏幕并将光标返回到第一行。
答案 1 :(得分:0)
快速而肮脏的解决方案......
public class Main {
public static final void main(String[] data) {
Scanner userInput = new Scanner(System.in);
int min = 0;
int max = 10;
int randomNumber = (int) ((Math.random() * max) + (min + 1));
while (true) {
System.out.print("Guess a number between " + min + " and " + max + ": ");
int guess = userInput.nextInt();
if (guess == randomNumber) {
System.out.println("Correct! The random number is: " + randomNumber);
break;
} else {
for (int i = 0 ; i < 25; i++) {
System.out.println();
}
}
}
}
}