2016-04-19 2 views
1

ランダムな配列を表示しようとしていますが、その配列の合計を表示していますが、 forループでやるのですが、代わりにwhileループを実行するよう指示されました。なぜ私のwhileループは配列の合計を数え、配列を表示するのには役に立ちません

private void SumOfArray() { 
     myWindow.clearOut(); 
     int total = 0; 
     int[] a = new int[4]; 
     int i; 
     i = 0; 
     while (i < a.length) { 
      i++; 
      a[i] = 1 + (int) (Math.random() * 10); 
     } 
     i = 0; 
     while (i < a.length) { 
      i++; 
      myWindow.writeOutLine(a[i]); 
     } 
     while (i < a.length) { 
      total += a[i]; 
     i++; 

     } 
     myWindow.writeOutLine(total); 

    } 
+1

出力からは何が得られますか?代わりにあなたは何を期待していましたか?私はこの問題がシンプルであることを知っていますが、具体的で問題の内容を正確に言うことは良いことです。 – markspace

答えて

6

あなたはArrayIndexOutOfBoundsExceptionを起こし、途中でiを増加しています。 a[i]の番号を割り当てた後にそれを増やす必要があります。

while (i < a.length) { 
     a[i] = 1 + (int) (Math.random() * 10); 
     i++; 
    } 

変更それは今、ループはforループに似て振る舞う - すなわちiは、ループの体の他のすべての文の後にインクリメントされます。

あなたの他のループも修正する必要があり、実際には、すべてのループを単一のループにマージすることができます。加えて

int i = 0; 
    while (i < a.length) { 
     a[i] = 1 + (int) (Math.random() * 10); 
     myWindow.writeOutLine(a[i]); 
     total += a[i]; 
     i++; 
    } 
1

、あなたは0を割り当てるループと2回ながら3を持っていますi ....

関連する問題