1

假设我得到了这个数组:

字符串[][]数组 = 新字符串[5][5];

数组[2][2] = 绝望;

能不能查到

字符串 s = "绝望"; - 等于任何数组元素而不使用 for 循环,并且不必手动输入分配值“绝望”的数组的行列组合?

4

4 回答 4

3

while循环而不是 for 循环

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);
}

比将其转换为 a 更好,List因为 HashSet 的contains()方法是O(1),而 fromList是 O(n)。

于 2012-09-28T13:38:14.347 回答
0

避免使用循环的唯一方法(不清楚为什么要这样做)是使用预先构建的包含所有字符串和索引的 Map。

于 2012-09-28T13:29:09.297 回答