我有这个代码,我想把try-catch放在while循环中。逻辑是,“当存在输入错误时,程序将继续要求正确的输入”。我该怎么做?提前谢谢。
public class Random1 {
public static void main(String[] args) {
int g;
Scanner input = new Scanner(System.in);
Random r = new Random();
int a = r.nextInt(10) + 1;
try {
System.out.print("Enter your guess: ");
g = input.nextInt();
if (g == a) {
System.out.println("**************");
System.out.println("* YOU WON! *");
System.out.println("**************");
System.out.println("Thank you for playing!");
} else if (g != a) {
System.out.println("Sorry, better luck next time!");
}
} catch (InputMismatchException e) {
System.err.println("Not a valid input. Error :" + e.getMessage());
}
}
答案 0 :(得分:2)
boolean gotCorrect = false;
while(!gotCorrect){
try{
//your logic
gotCorrect = true;
}catch(Exception e){
continue;
}
}
答案 1 :(得分:2)
我在这里使用了中断和继续关键字。
while(true) {
try {
System.out.print("Enter your guess: ");
g = input.nextInt();
if (g == a) {
System.out.println("**************");
System.out.println("* YOU WON! *");
System.out.println("**************");
System.out.println("Thank you for playing!");
} else if (g != a) {
System.out.println("Sorry, better luck next time!");
}
break;
} catch (InputMismatchException e) {
System.err.println("Not a valid input. Error :" + e.getMessage());
continue;
}
}
答案 2 :(得分:1)
您可以在break;
块中添加try
作为最后一行。这样,如果抛出任何execption,控件将跳过break
并移动到catch
块。但是如果没有抛出异常,程序将运行到break
语句,该语句将退出while
循环。
如果这是唯一的条件,那么循环应该看起来像while(true) { ... }
。
答案 3 :(得分:0)
你可以只有一个布尔标志,你可以适当地翻转。
下面的伪代码
bool promptUser = true;
while(promptUser)
{
try
{
//Prompt user
//if valid set promptUser = false;
}
catch
{
//Do nothing, the loop will re-occur since promptUser is still true
}
}
答案 4 :(得分:0)
在你的catch块中写'continue;'
:)