2017-10-17 8 views
-1
public boolean xyzThere(String str) { 
    for (int i=0; i < str.length()-3; i++){ 
    if (str.substring(i+1, i+4) == "xyz" && str.charAt(i) != '.'){ 
     return true; 
    } 
    } 
    return false; 
} 

上記の関数は常にfalseを返しますが、なぜうまくいかないのですか?私はここで、codingbat.comのJava演習を経由簡単ですよ:(。)与えられた文字列がXYZを直接期間が付け加えされていない「XYZ」の外観が含まれている場合codingbat xyx常にfalseを返す

trueを返します。だから "xxyz"は数えますが "x.xyz"は数えません。

誰でも手助けできますか?

答えて

1

文字列比較に==は使用できません。文字列の参照を比較します。

public static boolean xyzThere(String str) { 
     for (int i=0; i < str.length()-3; i++){ 
     if ("xyz".equalsIgnoreCase(str.substring(i+1, i+4)) && str.charAt(i) != '.'){ 
      return true; 
     } 
     } 
     return false; 
} 

これを試してみてください。

+0

ありがとう、私はそれを知っていたが、忘れてしまった。助けを応援! – theParanoidAndroid

関連する問題