3

我在网上看过,所有的教程/问题都指出了这一点。我不明白为什么这不起作用。任何帮助将非常感激。谢谢

import java.util.*;

public class test {
    static Scanner userInput = new Scanner(System.in);
    public static void main(String[] args) {
        String textEntered = userInput.next();
        if (textEntered == "hello") {
            System.out.println("Hello to you too!");
        }
    }
}

我输入“你好”,但没有打印任何内容。我也试过 next() 和 nextLine();

4

3 回答 3

13

有几件事:

  1. 您在问题标题中说过“while 循环”,但while您的代码中没有循环。所以它只会检查你输入的第一个令牌,而不是后续的令牌。

  2. 在 Java 中,您不使用==比较字符串,而是使用equals方法(或有时equalsIgnoreCase)。

    改变

    if (textEntered == "hello") {
    

    if (textEntered.equals("hello")) {
    

    运算符在==与对象实例(并且String实例是对象)一起使用时会检查两个操作数是否指向同一个对象,因此如果您使用它来比较具有相同字符序列的两个不同对象,则它是不正确的。 String

于 2012-10-13T09:32:10.877 回答
3

在java中你不能通过==操作符比较字符串,你需要使用stringOne.equals(stringTwo).

==将比较 ObjectLocation ,其中比较Java 中 Class.equals()提供的实际字符串String

于 2012-10-13T09:38:11.837 回答
-1

它可能不起作用的原因是您没有比较实际的字符串值。

http://www.leepoint.net/notes-java/data/strings/12stringcomparison.html

尝试使用类似的东西。

 if (textEntered.compareTo("hello") > 0) {
    System.out.println("Hello to you too!");
}

这可能会帮助你。

于 2012-10-13T09:36:09.727 回答