2011-03-14 67 views
1

如何检查元素是否在java中的数组?如何检查元素是否在java中的数组?

 int[] a = new int[5]; 
     a[0] = 5; 
     a[1] = 2; 
     a[2] = 4; 
     a[3] = 12; 
     a[4] = 6; 
     int k = 2; 
     if (k in a) { // whats's wrong here? 
      System.out.println("Yes"); 
     } 
     else { 
      System.out.println("No"); 
     } 

谢谢!

+4

你为什么叫'INT []'一个清单?它是一个数组,而不是一个列表。列表意味着在Java中的其他东西 – 2011-03-14 18:26:11

+2

dup http://stackoverflow.com/questions/1128723/in-java-how-can-i-test-if-an-array-contains-a-certain-value – AlfaTeK 2011-03-14 18:29:39

回答

6

的 “的foreach” 语法在Java中:

for (int k : a) { // the ':' is your 'in' 
    if(k == 2){ // you'll have to check for the value explicitly 
    System.out.println("Yes"); 
    } 
} 
+0

@Paŭlo - 感谢您的编辑。当我复制他的表情时,我绝对没有注意到'如果'。 – McStretch 2011-03-14 18:30:23

0

如果使用Java 1.5+

List<Integer> l1 = new ArrayList<Object>(); //build list 

for (Integer i : l1) { // java foreach operator 
    if (i == test_value) { 
     return true; 
    } 
} 
return false; 
+0

1)Can'在列表中有原语。 2)它是列表,而不是列表。 3)你不能实例化一个List,因为它不是一个类的接口。 – GriffeyDog 2011-03-14 19:03:05

+0

更好,@ griffeydog? – 2011-03-14 19:06:16

+0

在这种情况下,您可能需要列出。 Downvote缩回。 – GriffeyDog 2011-03-14 19:17:04

1

你必须做搜索自己。如果列表已排序,则可以使用java.util.arrays#binarySearch为您完成。

0

怎么了?编译器应该说你没有in关键字。

通常你会在这里使用循环进行搜索。如果您对同一个列表有许多此类检查,请对其进行排序并使用二分查找(使用java.util.Arrays中的方法)。

0

而不是采取数组,你可以使用ArrayList。你可以做以下

ArrayList list = new ArrayList(); 
list.add(5); 
list.add(2); 
list.add(4); 
list.add(12); 
list.add(6); 
int k = 2; 
if (list.contains(k) { 
    System.out.println("Yes"); 
} 
else { 
    System.out.println("No"); 
} 
0

您将需要遍历数组了,直到你发现你正在寻找一个比较每个元素:

// assuming array a that you defined. 
int k = 2; 
for(int i = 0; i < a.length; i++) 
{ 
    if(k == a[i]) 
    { 
     System.out.println("Yes"); 
     break; 
    } 
} 
相关问题