1

この配列を取得したとしましょう:

String [] [] array = new String [5] [5];

array [2][2]=絶望的;

かどうかを見つけることは可能でしょうか

文字列s="絶望的"; --forループを使用せず、値「desperate」が割り当てられた配列の行と列の組み合わせを手動で入力しなくても、任意の配列要素に等しくなりますか?

4

4 に答える 4

3

whileforループの代わりにループ

int i = 0;
int j = 0;  
while (i < n)  
{  
   while (j < m)  
   {  
      if (array[i][j].equals("..."))
      {  
         /// 
      }  
      j++;
   }   
   i++;    
}  
于 2012-09-28T13:23:16.840 に答える
2

拡張 for ループを使用: -

String [][] array = new String[2][2];
array[1][1] = "desperate";
array[0][1] = "despee";
array[1][0] = "despete";
array[0][0] = "dete";

for (String[] innerArr: array) {
    for (String value: innerArr) {
         if (value.equals("desperate")) {
             System.out.println(value + " == desperate");
         }
    }
}

出力: -絶望的 == 絶望的

私が提案するより良いArrayList<String>方法は、アイテムを保存するために使用することです..次に、contains()メソッドを呼び出して、リストにその要素が含まれているかどうかを確認できます..

List<String> listString = new ArrayList<String>(); 
listString.add("desperate");
listString.add("despe");

if (listString.contains("desperate")) {
     System.out.println("True");
}

出力: -

于 2012-09-28T13:28:19.787 に答える
1

(何らかの理由で) 配列を別のコレクション型に変更できないと仮定します。

String[][]array = new String[5][5];
array[2][2] = "desperate"; 


public boolean contains(String str){
  return new HashSet<String>((List<String>)Arrays.asList(array)).contains(str);
}

ListHashSet のcontains()メソッドはO(1)であり、そのメソッドはListO(n)であるため、a に変換するよりも優れています。

于 2012-09-28T13:38:14.347 に答える
0

ループの使用を回避する唯一の方法 (なぜそうしたいのかは明確ではありません) は、すべての文字列とインデックスを使用して事前に構築した Map を使用することです。

于 2012-09-28T13:29:09.297 に答える