Java 即使满足条件,循环也不会中断

Java 即使满足条件,循环也不会中断,java,Java,我试图编写一个测试程序,对照数据库(基本上是3个数组)检查用户的响应。以下是相关代码: while(true) { int r = randomnumbergenerator.nextInt(length); String[] split2 = a[r].split(" "); String lastNameAnswer = ""; while(!lastNameAnswer.equals(split2[1])) { System.out.prin

我试图编写一个测试程序,对照数据库(基本上是3个数组)检查用户的响应。以下是相关代码:

while(true) {
    int r = randomnumbergenerator.nextInt(length);
    String[] split2 = a[r].split(" ");
    String lastNameAnswer = "";
    while(!lastNameAnswer.equals(split2[1])) {
        System.out.println("What is " + split2[0] + "\'s last name?");
        lastNameAnswer = reader.next();
    }
    String hometownAnswer = "";
    String hometown = h[r];
    while(!hometownAnswer.equals(hometown)) {
        System.out.println("What is " +  split2[0] + "\'s hometown?");
        hometownAnswer = reader.next();    
    }
    String majorAnswer = "";
    String major = m[r];
    while(!majorAnswer.equals(major)) {
        System.out.println("What is " + split2[0] + "\'s major?");
        majorAnswer = reader.next();
    }
}
因此,它应该从数据库中选择一个名称 询问有关姓名的问题,如姓氏、家乡和专业。如果 用户的回答有误,应该反复提问。我的代码适用于姓氏和专业,但由于某种原因,家乡出现了问题。以下是输出:

What is Ellen's last name?
Guo
What is Ellen's last name?
Gao
What is Ellen's hometown?
asdf
What is Ellen's hometown?
awsefd
What is Ellen's hometown?
Shanghai China
What is Ellen's hometown?
What is Ellen's hometown?
Shaghai China
What is Ellen's hometown?
What is Ellen's hometown?
Shanghai China
What is Ellen's hometown?
What is Ellen's hometown?

正如你们所看到的,我无法越过家乡,即使我知道我的答案是正确的。我输入了正确答案,但问题被反复询问,循环没有中断。我改变了问题的顺序(以前是姓氏、专业、家乡,现在是姓氏、家乡、专业),但没有效果。发生了什么事?为什么这个循环不起作用,而其他循环却起作用?

正确答案是否包含空格?Scanner.next()返回下一个“标记”,默认情况下,标记被认为是以空格分隔的。也就是说,下一个标记覆盖所有字符,直到输入中的下一个空格。这意味着它不适用于包含空格的输入


要解决此问题,您可以更改分隔符设置,或者改用Scanner.nextLine()。

正确答案是否包含空格?Scanner.next()返回下一个“标记”,默认情况下,标记被认为是以空格分隔的。也就是说,下一个标记覆盖所有字符,直到输入中的下一个空格。这意味着它不适用于包含空格的输入


要解决这个问题,您可以更改分隔符设置,或者改用Scanner.nextLine()。

请给出您定义数组的部分好吗?请给出您定义数组的部分好吗?哇,很微妙。就是这样。将其更改为nextLine()。谢谢。哇,有些微妙的东西。就是这样。将其更改为nextLine()。谢谢