0

文字列で渡される関数があります。それから私は文字列を分割します

String[] info = s.split("\\s+");

次に、最初のインデックスがプラス記号(+)であるかどうかを確認します。文字列を入力すると:+他のものは+!=+と主張します

System.out.println("Check if "+ info[0]+ " = +");
if(info[0]=="+") {
    System.out.println("yes");
} else
    System.out.println("no");

これは私が得る出力です:

Interp> + 
Check if + = + 
no

誰もがこれがなぜであるか知っていますか?

4

3 に答える 3

4

そのはず:

if(info.length > 0 && "+".equals(info[0])) {
于 2013-03-26T22:44:19.733 に答える
3

sを比較するときStringは、常に。を使用してString.equals(String str)ください。==は、メモリIDが等しいかどうか文字列をString.equals()比較し、同じコンテンツを比較します。

if(info[0].equals("+")) { do stuff.. }

于 2013-03-26T22:44:14.917 に答える
0

2つを比較するには、Strings常に使用する必要がありますmyString.equals(otherstring); 。あなたの場合、これは次のようになります。

if(info[0].equalsIgnoreCase("+") {
    System.out.println("yes");
} else
    System.out.println("no");
}

文字列の可能性は次のとおりです。

  • string1.equals(string2) ->ブール値を返します
  • string1.equalsIgnoreCase(string2) ->ブール値を返します
  • string1.compareTo(string2)-> string1がstring2の前にアルファベット順に来る場合は-1を返し、両方の文字列が等しい場合は0を返し、 string2がstring1の前にアルファベット順に来る場合は+1を返します。

説明のために:==オペレーターは、文字列の内容ではなく、2つの文字列のメモリ参照を比較します。

于 2013-03-26T22:44:18.557 に答える