2013-10-22 20 views
0

我需要幫助瞭解如何讓用戶輸入不超過10的整數,然後將它們添加到數組中並從數組中打印出來。下面的代碼在運行時詢問用戶整數,然後永遠運行並且不起作用。我究竟做錯了什麼?在Java中添加到數組和陣列中

public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); // create a new scanner 
    System.out.print("Enter integers between 1 and 100\n "); 
    int[] nextNumber = new int[10]; 
    int i = 0; 
    int number = input.nextInt(); 

    while (i < nextNumber.length){ 
     i++; 
     nextNumber[i] = number; 
     number = input.nextInt();  
    } 

    int a = 0; 

    while (a < nextNumber.length){ 
     a++; 
     System.out.println(nextNumber[a]); 
    } 
+0

'的System.out.println(nextNumber [A]);'你應該'一個++'後'的System.out.println(nextNumber [A]);' – Nishant

+0

不是問題,我有忘了解決這個問題,當時我正在試驗它爲什麼不打印。但即使底線是System.out.println(nextNumber [a]);它仍然不起作用 – nfoggia

+0

你是什麼意思的「不工作」?還要交換一個++和println – Nishant

回答

2

似乎對我來說,就像你太快地增加你的索引一樣。您應該在您的循環的增加您的索引變量,而不是開始

我會建議你使用for循環,而不是因爲它們被設計爲:

Scanner input = new Scanner(System.in); // create a new scanner 
System.out.print("Enter integers between 1 and 100\n "); 

int[] nextNumber = new int[10]; 

for (int i = 0; i < nextNumber.length; i++){ 
    nextNumber[i] = input.nextInt(); 
} 

for (int a = 0; a < nextNumber.length; a++){ 
    System.out.println(nextNumber[1]); 
} 

而且,雖然我沒有在代碼中改變它,它看起來像你的最後一行應該是:

System.out.println(nextNumber[a]); 
0

問題1

變化

int i = 0; 
int number = input.nextInt(); 
while (i < nextNumber.length){ 
i++; //here is one problem. you not assigning the value to nextNumber[0]. 
nextNumber[i] = number; 
number = input.nextInt(); 

} 

int i = 0; 
while (i < nextNumber.length){ 
    number = input.nextInt(); 
    nextNumber[i] = number; 
    i++; 
} 

問題2

變化

int a = 0; 
while (a < nextNumber.length){ 
    a++; //here is one problem ..You never get nextNumber[0] value 
System.out.println(nextNumber[a]); 

} 

int a = 0; 
while (a < nextNumber.length){ 
    System.out.println(nextNumber[a]); 
    a++; 
} 
+0

對不起,我也注意到了,但不是問題。仍然沒有運行:/ – nfoggia

+0

仍然有同樣的問題。我的程序繼續運行,沒有輸出到屏幕 – nfoggia

+0

@ nfoggia你需要一個一個給10個輸入。鍵入一個數字,然後按Enter鍵。做10次 – Prabhakaran

1

增量的值後的數組索引已經被分配給陣列

while (i < nextNumber.length) { 
    number = input.nextInt(); 
    nextNumber[i] = number; 
    i++; 
} 

同applys到第二回路

while (a < nextNumber.length) { 
    System.out.println(nextNumber[a]); 
    a++; 
} 
+0

仍然有同樣的問題。我的程序繼續運行,沒有任何輸出到屏幕 – nfoggia

+0

其實最初的問題是'ArrayIndexOutofBoundsException',但在那裏工作得很好,很愚蠢的問題:你運行當前版本,乾淨/重建等? – Reimeus

0

您可以輕鬆地做到這一點如下。因爲您知道最大迭代次數,所以更好地使用循環。

Scanner input = new Scanner(System.in); // create a new scanner 
System.out.print("Enter integers between 1 and 100\n "); 
int[] nextNumber = new int[10]; 

int i = 0; 
while (i < nextNumber.length) nextNumber[i++] = input.nextInt(); 


int a = 0; 
while (a < nextNumber.length) System.out.println(nextNumber[a++]); 
+0

在使其變得超級簡潔之前,先清楚並糾正它。我喜歡單獨一行的循環體;並且爲了清晰起見,肯定喜歡提升/增量來擁有_it的own_ line。這裏的OP是一個初學者,當他甚至無法正確放置增量時,提示最簡潔的C風格並不能指導他清除簡單正確的代碼。 –

+0

你在說什麼是真實的托馬斯。它可以通過逐行分開來簡化。但它做同樣的工作。我想說明他的例子的最佳代碼。 – namalfernandolk