【问题标题】:String comparison doesn't work in while loop [duplicate]字符串比较在while循环中不起作用[重复]
【发布时间】:2014-05-24 10:30:12
【问题描述】:

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.");

谢谢

【问题讨论】:

  • 你应该使用 string.equals() 方法。您比较的方式是它们的内存位置而不是文字字符串。

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


【解决方案1】:

改变这个:

while(pass != word);

到这里:

while(!pass.equals(word));

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

【讨论】:

  • 啊,没看到。谢谢!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多