【问题标题】:String comparison fails while using Scanner使用 Scanner 时字符串比较失败
【发布时间】:2012-10-04 00:30:49
【问题描述】:

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

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!");
        }
    }
}

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

【问题讨论】:

  • 我在 sn-p 中没有看到 while 循环...你想为用户输入循环吗?
  • 我一直在看一些在线 youtube 教程,他没有提到这一点,当我在网上查看时,大多数使用非常相似的代码,我没有意识到是 if 语句不起作用.此外,在实际代码中,它位于 while 循环中,我只是对其进行了简化,这就是为什么我错误地标记了循环。

标签: java string loops input


【解决方案1】:

有几点:

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

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

    改变

    if (textEntered == "hello") {
    

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

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

【讨论】:

  • 行得通!非常感谢 :) 我以前学过 C++,刚学过 Java,必须习惯一些事情!非常感谢!
【解决方案2】:

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

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

尝试使用类似的东西。

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

这可能会对你有所帮助。

【讨论】:

  • 您指出的那个链接说:“使用 .compareTo() 方法来测试 不相等 比较”。 .compareTo 为相等的对象返回 0。
  • 那么你用它来测试两个字符串是否相同。如果是,它将返回 1。如果不是,则为负 1。但无论哪种方式,这两个函数都会为您提供您想要的完全相同的东西。 compareTo 函数不仅可以用于不相等,还可以用于相等。所以最好知道那只是相等的功能。我得到的主要是 Mikeecb 的问题是一个简单的谷歌搜索。因此,为什么我说它可能会帮助你。
  • 查看Comparable.compareTo() 的Javadoc,看看它应该返回什么。
  • compareTo int compareTo(T o) 将此对象与指定对象进行比较以进行排序。返回负整数、零或正整数,因为此对象小于、等于或大于指定对象。
【解决方案3】:

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

== 将比较 ObjectLocation,其中 .equals() 比较由 String 类在 java 中提供的实际字符串

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 2016-07-05
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多