即使条件需要,循环也不会停止

时间:2017-10-20 13:33:34

标签: java loops while-loop boolean

我的循环无法识别它需要退出。 任何帮助表示赞赏。

public static void main(String[] args) {
    Scanner kbd = new Scanner(System.in);
    String name;
    int residentLoopNumber = 0;
    boolean ifResidentFound = false;
    boolean ifUserQuit;

    Resident[] residents = new Resident[6];
    residents[1] = new Resident("Kelly Ocean", "72", "female", "102", "C", false);
    residents[2] = new Resident("Sean White", "99", "male", "302", "A", true);
    residents[3] = new Resident("Elias Abiadal", "66", "male", "666", "A", true);
    residents[4] = new Resident("Terry Goldsmith", "94", "male", "471", "B", false);
    residents[5] = new Resident("Sarah Young", "90", "female", "111", "C", true);

    //prompting user to enter resident name
    System.out.print("Please enter a resident's name: ");
    name = kbd.nextLine();

    //checking if user entered exit keyword
    ifUserQuit = ifQuit(name);

    do {

        //checking if entered name matches any in the list.
        for (int i = 1; i < residents.length; ++i) {

            if (residents[i].getName().toLowerCase().equals(name.toLowerCase())) {

                residentLoopNumber = i;
                ifResidentFound = true;
            }
        }

        //loop prompting user to enter name again
        while (!ifResidentFound) {

            System.out.println("<" + name + ">" + " is not on record.");
            System.out.print("Please enter a resident's name: ");
            name = kbd.nextLine();
            ifUserQuit = ifQuit(name);
        }

        for (int i = 1; i < residents.length; ++i) {

            if (residents[i].getName().toLowerCase().equals(name.toLowerCase())) {

                residentLoopNumber = i;
                ifResidentFound = true;
            }
        }

        //displaying resident information
        System.out.print(residents[residentLoopNumber].toString());

    } while (!ifUserQuit);

}

public static boolean ifQuit(String input) {

    return input.toLowerCase().equals("exit");
}

}

如果用户输入&#39;退出&#39;我的循环应该结束 但相反,我在输入退出时得到此输出。有什么想法吗?

请输入居民姓名:退出  没有记录在案。 请输入居民姓名:

1 个答案:

答案 0 :(得分:3)

while循环中没有任何内容可以更改条件变量。您需要在循环中的某个位置设置ifResidentFound = true以退出它。看起来您需要将for循环放在while循环中。