Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 而循环即使在条件要求时也不会停止_Java_Loops_While Loop_Boolean - Fatal编程技术网

Java 而循环即使在条件要求时也不会停止

Java 而循环即使在条件要求时也不会停止,java,loops,while-loop,boolean,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 Res

我的循环无法识别它需要退出。 感谢您的帮助

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");
}
publicstaticvoidmain(字符串[]args){
扫描仪kbd=新扫描仪(System.in);
字符串名;
int residentLoopNumber=0;
布尔值ifResidentFound=false;
布尔ifUserQuit;
居民[]居民=新居民[6];
居民[1]=新居民(“凯利海洋”,“72”,“女性”,“102”,“C”,假);
居民[2]=新居民(“肖恩·怀特”、“99”、“男性”、“302”、“A”,真);
居民[3]=新居民(“Elias Abiadal”、“66”、“男性”、“666”、“A”,真);
居民[4]=新居民(“Terry Goldsmith”、“94”、“男”、“471”、“B”、假);
居民[5]=新居民(“Sarah Young”、“90”、“女性”、“111”、“C”,真);
//提示用户输入居民姓名
System.out.print(“请输入居民姓名:”);
name=kbd.nextLine();
//检查用户是否输入了退出关键字
ifUserQuit=ifQuit(名称);
做{
//检查输入的名称是否与列表中的任何名称匹配。
对于(int i=1;i<0.length;++i){
if(常驻[i].getName().toLowerCase().equals(name.toLowerCase())){
residentLoopNumber=i;
ifResidentFound=true;
}
}
//循环提示用户再次输入名称
而(!ifResidentFound){
System.out.println(“+”未记录在案。”);
System.out.print(“请输入居民姓名:”);
name=kbd.nextLine();
ifUserQuit=ifQuit(名称);
}
对于(int i=1;i<0.length;++i){
if(常驻[i].getName().toLowerCase().equals(name.toLowerCase())){
residentLoopNumber=i;
ifResidentFound=true;
}
}
//显示居民信息
System.out.print(常驻[residentLoopNumber].toString());
}而(!ifUserQuit);
}
公共静态布尔ifQuit(字符串输入){
返回input.toLowerCase().equals(“exit”);
}
}

如果用户进入“退出”,我的循环应该结束 但是,当输入exit时,我得到这个输出。有什么想法吗

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

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

我的while循环应该在这种情况下迭代
while(!ifUserQuit)我有一行代码
ifUserQuit=ifQuit(name)
每次输入后,都应该更新“ifUserQuit”的值,该值来自布尔方法“ifQuit(name)”,如果用户输入“exit”,则该方法设置为返回true@MishI认为您误解了此处没有退出哪个循环。do循环中的while循环是一个永远不会退出的循环
ifResidentFound
是您的条件,它在该循环中永远不会更改。my while循环不在my for循环中。我的for循环甚至在显示输出之前就结束了。你能解释一下这是什么意思吗?
ifResidentFound
与程序的循环没有任何关系,它只检查是否在我的对象数组中找到了用户