2

だから私はこのコードを実行しました

        String line = worldRead.readLine();

        String[] aLine = line.split("");

        for (int i = 0; i < aLine.length; i++){

            System.out.println(aLine[i]);

            if(aLine[i] == "0"){

                System.out.println("Its an 0");

            }

        }

ファイルの最初の行を 1 文字ずつ出力しますが、if ステートメントが機能していません。デバガーを調べたところ、aLine[i]その時点での値は「0」でした。この奇妙な行動が理解できません。どうしてこれなの ?

4

5 に答える 5

3

使用する if(aLine[i].equals("0"))

==equals値を比較しながらオブジェクトをチェックします

于 2013-06-02T18:45:14.140 に答える
3
 if(aLine[i] == "0"){

     System.out.println("Its an 0");
 }

文字列を と比較しないでください==。メソッドを使用しequalsます。

 if(aLine[i].equals("0"){
     System.out.println("Its an 0");
 }

なんで?

演算子を使用すると、これら 2 つのオブジェクトが同じ==オブジェクトであるかどうかが実際にチェックされます。テストしているのは、それらのオブジェクト内の値です。

于 2013-06-02T18:45:33.770 に答える
0

equalsメソッドを文字列比較に使用します。

==文字列オブジェクトの文字列値を比較するのではなく、参照の等価性をチェックするだけです。

この点で、2 つの文字列オブジェクトを同じ値で比較すると、それらは==演算子によって等しくありません。

String line = worldRead.readLine();

        String[] aLine = line.split("");

        for (int i = 0; i < aLine.length; i++){

            System.out.println(aLine[i]);

            if(aLine[i].equals("0")){

                System.out.println("Its an 0");

            }

        }

今すぐ動作するはずです。

于 2013-06-02T18:46:04.127 に答える
0

他の人が言ったように、Java での文字列の比較は.equals()ではなくを使用して行う必要があり==ます。後者はオブジェクト ID のみをチェックしString、Java の 2 つのオブジェクトは同じオブジェクトでなくても同じ値を持つことができます。この場合、文字列の長さは 1 文字であることが保証されているため、 を使用して文字を比較できます==for拡張ループを使用して、コードを少し単純化することもできます。

String line = worldRead.readLine();
for (String s : line.split("")){
    System.out.println(s);
    if (s.charAt(0) == '0') {  // or s.equals("0")
        System.out.println("Its an 0");
    }
}
于 2013-06-02T18:48:52.063 に答える
0

上で StinePike が言ったように、equals()instaed of を使用し==ます。

2 つの文字列オブジェクトは同じではありませんが、等しいです!

于 2013-06-02T18:48:55.843 に答える