2014-12-29 41 views
-1

我剛剛瞭解了數組,並且想要構建一個簡單的程序,我使用do-while循環只接受數組中存在的數字,但我遇到了一些麻煩。問題我的數組不會與我的同時循環功能

Scanner input = new Scanner(System.in); 
int[] values; 
values = new int[5]; 
values[0] = 16; 
values[1] = 10; 
values[2] = 11; 
values[3] = 14; 
values[4] = 17; 
    int value; 
    do { 
    System.out.println("Enter a number:"); 
     value = input.nextInt();  
    } 
    while(value != values[]); 

剩下的將是「如果」包含一些走出去的文字根據被輸入該數組中的哪些數字報表。 「while」條件出現在我輸入的方式中的錯誤

編輯:由於這是不可能在Java中我可以只寫!= 16,10,11,14,17沒有得到一個錯誤?數組不會在條件下工作,所以我還停留在盤算的方式,包括在條件多個號碼

+1

「_」while「條件出現錯誤_」無論何時您遇到錯誤或異常,您都應該在問題中發佈它們。 – csmckelvey

+0

提示:嘗試編寫一個幫助器方法來檢查int是否在數組中,並在循環條件中使用它。 –

+0

使用Arrays.binarySearch()在值([Arrays.binarySearch(values,value)<0)中搜索值[]中的值,如我的答案 – boctulus

回答

1

正如你看到它的不可能只寫,但你可以搜索一個數組值或檢查值包含在一個列表(value =值[]!):

---第一種方式

使用整數列表:

import java.util.Scanner; 
import java.util.List; 
import java.util.ArrayList; 

public class InArrayWithAsListContains { 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     int value=0; 
     List<Integer> values = new ArrayList<Integer>(); 

     values.add(16); 
     values.add(10); 
     values.add(11); 
     values.add(14); 
     values.add(17);  

     do { 
      System.out.println("Enter a number:"); 
      value = input.nextInt();  
     } while(!values.contains(value)); 
    } 
} 

變化用List工作開始爲int []:

int[] arr = new int[] {16,10,11,14,17};   

// int[] into List<Integer> conversion 
for (int i : arr) values.add(i); 

---方式二

只是使用數組和Arrays.binarySearch(值,鍵)

import java.util.Scanner; 
import java.util.Arrays; 

public class Program { 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     int value=0; 
     int[] values = {16,10,11,14,17}; 

     Arrays.sort(values); 

     do { 
      System.out.println("Enter a number:"); 
      value = input.nextInt();  
     } while(Arrays.binarySearch(values, value) < 0); 
    } 
} 
+0

這不會/不工作,我不知道爲什麼OP接受這一點。 – Tom

+0

我沒有檢查它,但想法是正確的 – boctulus

+0

不,它不是。如果OP使用'int []'(並且他這樣做),那麼你的想法將無法工作。而且你在沒有測試的情況下發布代碼非常糟糕。 – Tom

0

int是不一樣的事,作爲一個int[]

5

do的終止條件循環:

while(value != values[]) 

是不合法的Java。您無法將int值與數組進行比較,並且您無法使用values[]來引用數組。我不知道你要完成什麼,但是你需要在終止條件中加入一個特定的下標,或者以其他方式修改它。