如何退出此循环?

时间:2016-10-16 20:03:01

标签: java arrays for-loop while-loop

我的程序用于在多维数组中搜索用户输入的状态。然后它供应州鸟和花。但是我无法弄清楚我需要将语句放在何处以退出循环。它将继续搜索数组以进行输入,并像我想要的那样反复询问问题。但是我尝试了一些不同的方法,当我输入没有时,它无法让它退出循环。

Scanner userInput = new Scanner(System.in);
while (true) {
    System.out.print("Enter a State or None to exit: ");
    String stateName = userInput.next();

    for (int i = 0; i < stateInformation.length; i++) {
        if (stateInformation[i][0].equalsIgnoreCase(stateName)) {
            System.out.println(stateInformation[i][0] + ":\n " +
                "The State bird is the " + stateInformation[i][1] + "\n " +
                "The State Flower is the " + stateInformation[i][2]);
            break;
        }
    }
}

5 个答案:

答案 0 :(得分:2)

这是您在所选择的特定声明中使用break的方式:

myLabel:
while (true)
{
    while (true)
    {
        break myLabel; // This will break out of the outer loop that has been labeled.
    }
}

答案 1 :(得分:0)

我假设您想要在循环时退出。您应该在for-loop之前检查用户输入的内容,如果它是None,请使用break。第二个选项是检查while参数中的输入是否为空。

答案 2 :(得分:0)

假设你想要摆脱for循环,如果你使用一个函数然后使用return如下所示,那就没问题了:

private Object searchData(...) 
{
        for (Type t : types2) {
            if (some condition) {
                // Do something and break...
                return object;
            }
        }
}

答案 3 :(得分:0)

您的程序会提示用户输入None退出。因此添加一个条件来处理该行为:

String stateName = userInput.nextLine();
if (stateName.equalsIgnoringCase("none")) {
  break;
}

这将终止您的while (true)循环。

正如评论中所讨论的,使用Scanner.nextLine()捕获用户输入通常会更好。

答案 4 :(得分:0)

我想你要检查userInput是否为“None”,然后像这样突破while循环:

while (true) {
    System.out.print("Enter a State or None to exit: ");
    String stateName = userInput.next();
    if ("None".equalsIgnoreCase(stateName)) break; // Added to break the while loop

    for (int i = 0; i < stateInformation.length; i++) {
        if (stateInformation[i][0].equalsIgnoreCase(stateName)) {
            System.out.println(stateInformation[i][0] + ":\n " +
                "The State bird is the " + stateInformation[i][1] + "\n " +
                "The State Flower is the " + stateInformation[i][2]);
            break;
        }
    }
}