尽管条件正在满足Java,但循环不会中断

时间:2015-03-02 00:18:23

标签: java

我正在尝试编写一个测试程序来检查用户对数据库的响应(基本上是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?

正如你所看到的,即使我知道我的答案是正确的,我也无法回到家乡。我输入了正确的答案但是问题被反复询问并且循环没有中断。我改变了问题的顺序(曾经是姓,主要,家乡,现在它的姓,家乡,少校),但这没有效果。到底是怎么回事?为什么这个循环不起作用,但其他循环呢?

1 个答案:

答案 0 :(得分:5)

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

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

相关问题