获取无效输入后重新启动的代码(Java)

时间:2018-09-26 00:31:55

标签: java

我正在处理以下代码块:

    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中选择角色:

有什么想法吗?我可以使用它,但是它正在跳到下一轮,我希望它保持在同一轮直到有效输入为止。我一直在找几个小时,无法正常工作。

3 个答案:

答案 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