2013-12-11 192 views
2

我已經用10個7的複數構建了一個數組,現在我試圖用for循環以相反的順序打印它。但我的程序似乎忽略了這段代碼。我沒有問題按正常順序用for或for循環打印。 這段代碼有什麼問題?用for循環打印一個數組

int[] numbers = new int[10]; 
for (int i = 0; i < numbers.length; i++) { 
    numbers[i] = (int) (Math.random() * 10) * 7; 
} 
for (int i = numbers.length; i == 0; i--) { 
    System.out.println(numbers[i]); 
} 
System.out.println("---"); 
for (int i = 0; i < numbers.length; i++) { 
    System.out.println(numbers[i]); 
} 
+0

在第二環更大的陣列來執行,myabe打算: (INT I = numbers.length;我> 0; i--) – alepuzio

回答

3

java中的大小爲N的數組的索引範圍從0到N-1。所以實際上numbers.length是越界 - numbers中的最後一個元素與索引numbers.length - 1。也沒有你的條件應該是i >= 0代替i==0,否則你的週期將永遠不會爲尺寸大於1

+0

謝謝!我知道陣列的大小和索引範圍,但我完全忘了考慮我的代碼。 Netbeans並沒有向我展示任何錯誤,當我運行它時也沒有發現Java錯誤。實際上,我之前已經完成了這個練習(但將代碼留在其他地方),並且沒有時間問題。非常沮喪地現在擁有它們!我不知道條件。 – YoNuevo

+0

@YoNuevo我認爲理解**爲什麼**條件是這樣的更重要。如果您瞭解for循環的工作原理,那麼您可以更輕鬆地調試自己的代碼。 –

1

應該

for (int i = numbers.length - 1; i >= 0; i--) {

在相反的順序循環。

+0

請再看看循環。還有一個錯誤會阻止它正常運行。 –

+0

我確實忘了'-1',但現在我已將它添加到代碼中,但它仍不會打印任何內容。我不明白爲什麼這個程序忽略了這段代碼。它也不顯示我的任何錯誤。 – YoNuevo

+1

@YoNuevo看看我的答案,你也應該用'i> = 0'替換'i == 0'。 –