字符串比较在while循环中不起作用

时间:2014-04-10 15:43:47

标签: java loops input while-loop do-while

Noob Java问题:为什么Do While循环不会接受用户输入?当我使用不同的变体(例如int作为答案)时,它可以工作。但是当我查找一个字符串时,它永远不会接受字符串并转义循环。

这有效:

int value = 0;
do {
    System.out.println("Enter a number: ");
    value = scanner.nextInt();
}
while(value != 5);
System.out.println("Do while loop has ended.");

这不起作用:

String pass;
String word = "word";
do {
    System.out.println("Enter password: ");
    pass = scanner.nextLine();
}
while(pass != word);
System.out.println("Password accepted.");

由于

2 个答案:

答案 0 :(得分:2)

改变这个:

while(pass != word);

到此:

while(!pass.equals(word));

您在使用!=时比较了引用,而不是字符串的实际内容。由于它们没有指向相同的String,因此您的循环将始终在第一次运行时退出。

答案 1 :(得分:0)

" =="比较内存中的地址,因此如果输入相同的单词,您存储的引用将指向不同的对象。