2014-12-28 68 views
0

使用一維數組來解決以下問題:
編寫一個輸入五個數字的應用程序,每個數字在10和100之間(包括10和100)。當每個數字被讀取時,只有當它不是已經讀取的數字的副本時才顯示它。提供所有五個數字都不相同的「最壞情況」。使用盡可能最小的陣列來解決這個問題。在用戶輸入每個新值後,顯示完整的唯一值輸入。如何一次讀取數組的所有元素並確定數組中已存在的元素?

我的程序大部分運行良好。我面臨的唯一問題是,當我輸入數組的第二個元素來檢查第一個輸入時,它輸出「該數字不在數組中」。即使數字在數組中。請對我輕鬆,因爲我對編程非常天真。

import java.util.Scanner; 

public class DuplicateElimination { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 

     // the variable to read the number 
     int number = 0; 

     // the array with the elements needed to be checked 
     int [] array = {12, 33, 54, 90, 100, 1}; 

     // for loop to ask the question if the number is in the array. 
     for(int counter = 0; counter < array.length; counter++) 
     { 
      System.out.print("Enter a number to check: "); 
      number = input.nextInt(); 

      if (number == array[counter]) 
       System.out.printf("The number %d is already in the array.\n\n", array[counter]); 


      else 
       System.out.printf("The number %d is not in the array.\n\n", number); 
     } 
    } 
} 

P.S這不是一個家庭作業,我只是爲了讓我在實踐中。

+0

該數組已滿,您創建了5個條目。你確定這不是作業嗎?因爲你的代碼真的不符合你的問題陳述。 –

回答

2

使用此條件:

if (number == array[counter]) 

你正在評估如果number當前值等於給array內的單個值。爲了評估number是否存儲在array中的值是檢查array內部的所有值。下面是如何實現的一個例子:

boolean found = false; 
for (int j = 0; j < currentSizeOfArray; j++) { 
    if (number == array[j]) { 
     found = true; 
     break; 
    } 
} 
if (found) { 
    //do something 
} 

另一個提示來解決你的家庭作業:用while循環讀取數據,而不是一個for循環。此外,有一個時間變量保持數組中當前元素的數量,其中不是與數組長度相同。

相關問題