2016-11-18 192 views
1

我是新來的java,我想知道如何修復我的程序,該程序必須從用戶輸入中獲取數字,然後將它們存儲在數組中,然後向前並向後打印這些數字。我已經設法讓程序向前打印;然而,當我嘗試打印向後我得到線程在數組中向後打印數字

異常 「主要」 java.lang.ArrayIndexOutOfBoundsException:4 在arrays4Days.arrayS1.main(arrayS1.java:55)

import java.util.*; 
public class arrayS1 { 
    public static void main(String[] args) { 
     Scanner console = new Scanner(System.in); 
     System.out.print("How many numbers will you enter? "); 
     int count = console.nextInt(); 
     int myArray[]= new int [count]; 

     for (int i =0; i < myArray.length ; i++) { 
      System.out.print("Type a number: "); 
      int number=console.nextInt(); 
      myArray[i]=number; 
     } 

     System.out.println(); 
     System.out.println("Your numbers in forward order:"); 

     for (int i = 0 ; i < myArray.length ; i++) { 
      System.out.println(myArray[i]); 
     } 

     System.out.println(); 
     System.out.println("Your numbers in backward order:"); 

     for (int i = myArray.length ; i> 0 ; i--) { 
      System.out.println(myArray[i]); 
     } 

    } 
} 
+0

'INT I = myArray.length':你能解釋一下爲什麼你認爲一個數組的長度也產生有效的索引?如果是這種情況,那麼爲什麼你在第一個循環中寫了'i Tom

+0

我認爲myarray.length表示存儲在數組中的值的數量。我用它來設置for循環可以循環的最大次數(用於我的第一個循環)。 –

回答

3

注意,在你的第一個循環,i從零開始,然後上升到 - 但不等於 - 數組的長度

for (int i = 0 ; i < myArray.length ; i++) { 

所以第二環也應該開始在這個位置

for (int i = myArray.length - 1; i>= 0 ; i--) { 
    System.out.println(myArray[i]); 
} 

,應該深入到零