我正在处理以下代码块:
while (!userCorrect) {
Scanner input = new Scanner(System.in);
System.out.print("Guessing (round " + roundNumber1++ + "): Choosing your letter from a-z: ");
String letter = input.nextLine();
if (letter.length () > 1) {
System.out.println("You should not enter more than 1 character");
}
System.out.println("end of (round " + roundNumber2++ + ")");
}
}
我想要做的是在用户输入多个字符后,代码返回到:
System.out.print(“ Guessing(round” + roundNumber1 ++ +“):从a-z中选择字母:”);
直到仅选择1个字符,然后移至第2轮。
例如假设它是第一回合,并且用户输入了az。这将引发我的错误,说您不应输入超过1个字符,然后返回到:
猜测(第1轮):从a-z中选择角色:
有什么想法吗?我可以使用它,但是它正在跳到下一轮,我希望它保持在同一轮直到有效输入为止。我一直在找几个小时,无法正常工作。
答案 0 :(得分:1)
仅在收到有效输入后的 处递增:
boolean userCorrect = false;
int roundNumber = 1; // starting round
while (!userCorrect) {
Scanner input = new Scanner(System.in);
System.out.print("Guessing (round " + roundNumber + "): Choosing your letter from a-z: ");
String letter = input.nextLine();
if (letter.length () > 1) {
System.out.println("You should not enter more than 1 character");
}
else{
System.out.println("end of (round " + roundNumber + ")");
roundNumber++; // now increment
}
}
请注意,此循环将继续进行,直到您将userCorrect = true
设置在循环内的某个位置为止。
答案 1 :(得分:0)
您可以像下面那样使用
while (!userCorrect) {
Scanner input = new Scanner(System.in);
System.out.print("Guessing (round " + roundNumber1 + "): Choosing your letter from a-z: ");
String letter = input.nextLine();
if (letter.length () > 1) {
System.out.println("You should not enter more than 1 character");
continue;
}
System.out.println("end of (round " + roundNumber1 + ")");
roundNumber1++;
}
答案 2 :(得分:0)
这是另一种方法,使用continue关键字基本上可以将执行强制回到循环的顶部。使用此实现,只需在需要时将done设置为true。
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int roundNumber = 1;
boolean done = false;
do
{
System.out.println("Guessing (round " + roundNumber + "): Choosing your letter from a-z: ");
String letter = input.nextLine();
if(letter.length() > 1)
{
System.out.println("You should not enter more than 1 character");
continue;
}
else
{
roundNumber++;
}
//Set done to true based on some condition
}while(!done);
}
//end main