2014-04-03 42 views
0

我寫這個程序給我適合。我試圖做的是防止用戶輸入兩次相同的整數。該程序需要4個int輸入,並將它們與4個隨機int的數組進行比較,搜索匹配。這是我迄今在防止多種投入方面的嘗試。防止重複的掃描儀用戶輸入

for (int z = 0; z<4; z++){ 
    System.out.println("Enter a number between 0-9. No duplicates please!"); 
      temp[z] = inputDevice.nextInt(); 

      for(int why = 0; why<temp.length; why++){ 
       if(Arrays.asList(temp).contains(temp[z])){ 
        System.out.println("Duplicate found! Please enter a non-repeating digit"); 
        temp[z]=0; 
        z--; 
       } 
      } 


      } 

輸入進入臨時陣列就好了。正在被傳遞給程序中的其他方法,這是行得通的。我猜這個問題是我的條件語句 - 如果(Arrays.asList(temp).contains(temp [z]))

有沒有更好的方法來測試,看看數組是否已經包含一個值?

在此先感謝。

回答

1

1)由於你的數組轉換爲一個列表,還不如用一個ArrayList

2),如果它包含在列表中已經

List<Integer> my_list = new ArrayList<Integer>(); 
for (int z = 0; z<4; z++){ 
    System.out.println("Enter a number between 0-9. No duplicates please!"); 
    int input = inputDevice.nextInt(); 
    if(my_list.contains(input)){ 
     System.out.println("Duplicate found! Please enter a non-repeating digit"); 
     z--; 
    } 
    else{ 
     my_list.add(input); 
    } 
} 
+0

This Works!我只需要弄清楚如何將這個數組List複製到我爲我計算的其他數組中。謝謝C.B.希望我可以給你信貸的答案,但我沒有足夠的代表這樣做呢。但我很感激幫助。 – Killdashnine

0
內的一個變量,測試存儲您輸入

當您檢查temp是否包含z時,它已經包含z。在檢查之前將輸入放入一個臨時變量中,然後僅添加它。

0

您未使用循環中的why

但是,如果可能的話,我會將temp更改爲ArrayList的實現。與toList方法的問題。它使用int[]數組作爲單個對象,而不是將其作爲一個int對象的數組處理。要做到後者,你必須使用Integer

+0

由於某些原因,如果語句沒有檢測到重複。 – Killdashnine