5

重複の可能性:
文字列が文字列と等しくない?

私はJavaが初めてで、このコードブロックの何が問題なのかわかりません。配列がnullではないことはわかっていますが、他の場所でテストしています。私が C# でプログラミングするのに慣れている構文の問題があるのか​​もしれません。

     Scanner input = new Scanner(System.in);
     System.out.println("Enter ID :");
     String employeeId = input.nextLine();
     int index =  -1;
     for(int i = 0 ; i < employeeCounter ; i++)
     {
         if(employeeId == employeeNumber[i])
         {
           index = i;
         }
     }

     if(index == -1)
     {
         System.out.println("Invalid");
         return;
     }

私はいつも「無効」の部分にたどり着きます。理由はありますか?前もって感謝します


employeeNumber[0]is is "12345" employeeIdis "12345" but I can,t get into the first if statement but employeeIdit is equal to employeeNumber[0].

4

7 に答える 7

12

文字列を と比較しないでください==

使用する

if (string1.equals("other")) {
    // they match
}
于 2012-04-25T05:33:32.893 に答える
6

そのような文字列を比較します

if(employeeId.equals(employeeNumber[i]) {

}
于 2012-04-25T05:33:33.183 に答える
4

他の人が指摘したように、完全なコードは役に立ちますが、私の推測では、次のコード行になります。

if(employeeId == employeeNumber[i])

== を使用して 2 つの文字列を比較することはありません。代わりに equals() または equalsIgnoreCase() を使用してください。== オブジェクトの等価性のみをチェックします。つまり、employeeId と employeeNumber がメモリ内の同じオブジェクトを参照しています。したがって、オブジェクトの場合は常に equals() メソッドを使用します。文字列の場合は、大文字と小文字を区別しない一致に equalsIgnoreCase() を使用することもできます。== は、int、long などのプリミティブ型で使用する必要があります。

于 2012-04-25T05:37:01.130 に答える
3

2 つの文字列で == を使用すると、ポインタ アドレスが比較されます。2 つの文字列を比較するには、firststring.equals(secondstring) を使用する必要があります。

于 2012-04-25T05:33:35.630 に答える
2

メソッドを使用equals()して文字列を比較する

if(employeeId.equals(employeeNumber[i])){}
于 2012-04-25T05:34:01.563 に答える
2

文字列を比較するときは、 String1.equals(String2);を使用します。これで結果が得られるはずです

于 2012-04-25T05:51:20.353 に答える
0

「==」は、2 つのオブジェクトの参照が同じかどうかをチェックします。しかし、 equals() メソッドは内容が同じか異なるかをチェックします。

于 2012-04-25T05:41:19.727 に答える