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インスタンスはオブジェクト) で使用される場合、2 つのオペランドが同じオブジェクトを指しているかどうかを確認するため、同じ文字列を持つ2 つの異なる オブジェクトを比較するために使用する場合は正しくありません。String

于 2012-10-13T09:32:10.877 に答える
3

Java では、文字列を演算子で比較することはできません。==使用する必要がありますstringOne.equals(stringTwo)

==Javaのクラス.equals()によって提供される実際の文字列を比較する場合、ObjectLocationを比較します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 に答える