2015-05-09 41 views
1

我想不通爲什麼我的結局是不是:Java的基本整數數組

Your first array element is: 0 
1 
2 
3 
4 
5 
6 

(預期輸出)

我的代碼:

public class day7 { 
    public static void main(String[] args){ 
     int arrayZ[] = new int[7]; 

     arrayZ[0] = 0; 
     System.out.println("Your first array element is: " + arrayZ[0]); 

     int i = 1; 
     while (i <= 6){ 
      arrayZ[i] = i; 
      i++; 
     System.out.println(arrayZ[i]); 
     } 
    System.out.println("Each entry of the array is: " + arrayZ[0] + " " + arrayZ[1] + " " + arrayZ[2] + " " + arrayZ[3] + " " + arrayZ[4] + " " + arrayZ[5] + " " + arrayZ[6]); 
    System.out.println("And, the sum of all array elements are: " + arrayZ[0] + arrayZ[1] + arrayZ[2] + arrayZ[3] + arrayZ[4] + arrayZ[5] + arrayZ[6]); 
    } 
} 

結果/實際輸出:

Your first array element is: 0 
0 
0 
0 
0 
0 

異常在線程 「主」 java.lang.ArrayIndexOutOfBoundsException:7 在day7.main(day7.java:14)

+0

呼叫我++;在System.out.println(arrayZ [i])之後; – DoubleMa

+0

單步執行調試器中的代碼(例如,使用IntelliJ IDEA),您將看到它出錯的地方。 – Jerry101

+0

當你使用'while'循環時,依賴於inc/decrement sentinel值(即:在你的情況下爲'i')for循環通常是更簡潔的選項。 'for(int i = 0; i <= 6; ++ i){...}'。 – ChiefTwoPencils

回答

1

剛剛切換線之間我++和的System.out.println(arrayZ [I] );

如果你想計算總和,只需將它們添加到一個新的變量或使用();

public static void main(String[] args) { 
    int arrayZ[] = new int[7]; 

    arrayZ[0] = 0; 
    System.out.println("Your first array element is: " + arrayZ[0]); 

    int i = 1; 
    while (i <= 6) { 
     arrayZ[i] = i; 
     System.out.println(arrayZ[i]); 
     i++; 
    } 
    System.out.println("Each entry of the array is: " + arrayZ[0] + " " + arrayZ[1] + " " + arrayZ[2] + " " + arrayZ[3] + " " + arrayZ[4] + " " + arrayZ[5] + " " + arrayZ[6]); 
    System.out.println("And, the sum of all array elements are: " + (arrayZ[0] + arrayZ[1] + arrayZ[2] + arrayZ[3] + arrayZ[4] + arrayZ[5] + arrayZ[6])); 
} 
+0

謝謝:)現在我明白了 –

1

改成這樣:

while (i <= 6){ 
    arrayZ[i] = i; 
    System.out.println(arrayZ[i]); 
    i++; 
} 

因爲你使用它的方式,它會嘗試打印arrayZ [7],即不存在。

+0

這就是我的想法。 :3 –

2

您的密碼正確無誤,問題依次爲incrementingprinting

public static void main(String[] args) { 
    int arrayZ[] = new int[7]; 

    arrayZ[0] = 0; 
    System.out.println("Your first array element is: " + arrayZ[0]); 

    int i = 1; 
    while (i <= 6) { 
     arrayZ[i] = i; 
     System.out.println(arrayZ[i]); 
     i++; 
    } 
    System.out.println("Each entry of the array is: " + arrayZ[0] + " " + arrayZ[1] + " " + arrayZ[2] + " " + arrayZ[3] + " " + arrayZ[4] + " " + arrayZ[5] + " " + arrayZ[6]); 
    System.out.println("And, the sum of all array elements are: " + (arrayZ[0] + arrayZ[1] + arrayZ[2] + arrayZ[3] + arrayZ[4] + arrayZ[5] + arrayZ[6])); 
} 

還需要先總結中的項目,需要使用括號,然後使用+String將其他變量轉換爲String,並會顯示連接後的結果。輸出是:

你的第一個數組元素是:0
陣列的每個條目是:0 1 2 3 4 5 6
而且,所有陣列元素的總和爲:21

如果你h你的循環計數器的大小固定邊界(在你的情況下,他們是1到6),那麼最好使用for循環。

+0

非常感謝。您的評論非常清晰,非常有幫助。 –

+0

很高興幫助你:) –

+0

你只需要將i ++替換爲System.out行......因爲它的數組將綁定到i ++的最後一個索引上。 –

1
  • 只是切換i ++和System.out之間的界限。的println(arrayZ [I]);

  • 如果您想計算總和,只需將它們添加到一個新變量中或使用();

    public static void main(String[] args) { 
    int arrayZ[] = new int[7]; 
    
    arrayZ[0] = 0; 
    System.out.println("Your first array element is: " + arrayZ[0]); 
    
    int i = 1; 
    while (i <= 6) { 
        arrayZ[i] = i; 
        System.out.println(arrayZ[i]); 
        i++; 
    } 
    System.out.println("Each entry of the array is: " + arrayZ[0] + " " + arrayZ[1] + " " + arrayZ[2] + " " + arrayZ[3] + " " + arrayZ[4] + " " + arrayZ[5] + " " + arrayZ[6]); 
    System.out.println("And, the sum of all array elements are: " + (arrayZ[0] + arrayZ[1] + arrayZ[2] + arrayZ[3] + arrayZ[4] + arrayZ[5] + arrayZ[6])); 
    

    } while循環代碼

-1

變化如下

while (i <= 6){ 
    arrayZ[i] = i; 
    System.out.println(arrayZ[i]); 
    i++; 
}