2016-10-17 7 views
0

編集: 大変申し訳ありませんが、あまり明確な質問はありません。他の方法を試してみましょう: 名前のArayのリストがあります:Peter、John、AdamJAVAで何かを見つける方法はありますか?

私たちは文字列名を探しています。 ArrayListにStringが含まれている場合は、Stringを書きたいとします。 ArrayListにStringが含まれていない場合は、StringをArrayListに追加します。

「Adam」を探している場合は、最初に「Peter」、「John」、「Adam」という名前が見つかるので、このプログラムは機能しません。だから、最初の2回は "アダム"はリストにはないと思って行動します。

String findName; 
for (i = 0; i < arrayList.size(); i++) { 
    if (arrayList.get(i).getValue().contains(findName)) { 
    System.out.println(findName); 
    break; 
    } 
    else 
    arrayList.add(findString); 
} 

オリジナル質問:

私は文字列と配列(ArrayListの)を持っています。ストリングが配列内にあれば何かしなければならないし、配列内になければ何かをしなければならない。それ、どうやったら出来るの? ArrayListには、文字列が含まれていないようにそれは、一度だけ文字列を検索し、それが行動する他のすべての回になるので

String myString; 
for (i = 0; i < arrayList.size(); i++) { 
    if (arrayList.get(i).getValue().equals(myString)) { 
    DO SOMETHING; 
    break; 
    } 
    else 
    DO SOMETHING ELSE; 
} 

: は、私はこのようにそれを行うことはできません。

は、だから私はこのようにそれをやっている:

String findString = "0"; 
String myString; 
for (i = 0; i < arrayList.size(); i++) { 
    if (arrayList.get(i).getValue().equals(myString)) { 
    DO SOMETHING; 
    findString = "2"; //when I find the String, I change this 
    break; 
    } 
    if findString == "0"; //if I have not found the String, this happens 
    DO SOMETHING ELSE; 
} 

と私は感じている、それはこのように行われていないする必要があります。 ;)

私はこの方法の代わりにブール値を使うことができますが、それは他の方法でも同じです。これを正しく行うためのトータルの方法はありませんか?

+0

代わりに '' == –

+1

等号(文字列)break文を削除しますが、アレイ内のすべての試合のために「何かをする」をやりたいですか?そうであれば、breakはループを終了させるので、 'break'できません。文字列がループ内に後で表示されるかどうかは決して分からないので、ループが終了した後でなければ "何か他のこと"を行うことはできません。例えばあなたは基本的に「私は過去30秒以内に何か車の上を走ったのですか?いいえ、次の10時間以内に何かを乗り越えることはないでしょう。 – Andrew

+0

の '' –

答えて

0

値を見つけて中断した場合はブール値をtrueに設定できます。 値が見つからない場合、ブール値はfalseのままです。 それでは、もしあなたがそうならば、

0

それは少し曖昧なので、これがあなたの望むものなのかどうかは分かりませんが、コードの最初の部分でブレークを削除すれば、あなたはそれが文字列のすべての出現に対して、あるいは最初のものに対して何かしたいと思っていますか?あなたが休憩が必要です場合にもループがとても終了後には、iの値をチェックすることができ

if(i==arrayList.size()) 
{ 
    //String found 
} 
else 
{ 
    //String not found 
} 
+0

また、iをテスト変数として使用する場合は、ループ内にブレークが必要です –

1

クリーンな方法は次のとおりです。

public boolean arrContainsStr(String str, String[] arr) { 
    for (int i = 0; i < arr.length; i++) { 
     if (arr[i].equals(str)) { 
      return true; 
     } 
    } 
    return false; 
} 
:文字列が配列であるかどうかを返すメソッドを宣言します

そして、このようなあなたのコード内でこのメソッドを使用します。

String myString;  
String[] myArray; 
if (arrContainsStr(myString, myArray)) { 
    DO SOMETHING; 
}else { 
    DO SOMETHING ELSE; 
} 

これは原始的な文字列配列のためです。 ArrayListなどを使用している場合は、単に.contains(myString)メソッドを使用して、リストに文字列が含まれているかどうかを確認できます。ここにドキュメント:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#contains(java.lang.Object)

1

この質問は少し奇妙ですが、Listかどうかを確認したい場合は、最初の文章を読んでください。 ArrayListにはオブジェクト(例:String)が含まれていますので、ループするのではなくcontains(Object o)メソッドを使用できます。私はあなたのポイントを見逃している必要があります。どんな場合でも、例:

出力:文字列が見つかりました。 (この例では)。

1

.containsを使用して、文字列がリストに含まれているかどうかを確認できませんでしたか?

if(arrayList.contains(myString)){ 
    // DO SOMETHING 
} else { 
    // DO SOMETHING ELSE 
} 
関連する問題