2017-11-17 8 views
0

私は、1-9までのキューブを降順で使用するforループの配列を使用するのに苦労しています。私は範囲外のエラーを受け取り続けており、立方体の値は完全にオフです。私は、配列について考えてどこが間違っているのかについての説明を高く評価しています。問題は私の指数であると信じていますが、私は理由を説明するのに苦労しています。ループ内の配列(Java)インデックスの範囲外

System.out.println("***** Step 1: Using a for loop, an array, and the Math Class to get the cubes from 9-1 *****"); 
    System.out.println(); 
    // Create array 
    int[] values = new int[11]; 
    int[] moreValues = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
    // Create variable to store cubed numbers 
    double cubedNumber = 0; 
    // Create for loop to count in descending order 
    for (int counter = 9; counter < moreValues.length; counter--) 
    { 
     cubedNumber = Math.pow(counter,3); 
     System.out.println(moreValues[counter] + " cubed is " + cubedNumber); 
    } 

Output

+3

とすぐcounter'が-1に達する 'として、それは試してみて、境界の外、このように、存在しないインデックスに配列の値を読み込みます。 for(int counter =(moreValues.length)-1; counter> = 0; counter - ) '(なぜあなたのケースではなく、カウントダウンしたいと思うのは私の外です)。 – AntonH

+2

あなたはあなたの '数学(Math)'の行で、あなたは 'moreValues [counter]'ではなく、カウンターをキューブしていることを認識していますか? –

+0

また、かなり重複しているわけではありませんが、チェックアウトする価値はあります:https://stackoverflow.com/questions/5554734/what-c​​auses-a-java-lang-arrayindexoutofboundsexception-and-how-do-i-prevent-it – AntonH

答えて

1

あなたの主なバグは、あなたがダウンをカウントしている場合常に trueになりますループ終了条件counter < moreValues.length、です。

は代わりに、ゼロ以上であること、インデックスをチェック:

for (int counter = 9; counter >= 0; counter--) 

あなたの他のバグはあなたがインデックスを3乗しているではなく、数は、インデックスによって指されるので、代わりにこれをコーディングします。

cubedNumber = Math.pow(moreValues[counter], 3); 

混乱を減らすために、あなたはより良いループ変数が配列のインデックスとして使用されているiかのように、ループ変数のための業界標準の名前を使用している、indexが使用されることが多いとコードを向上させることができます明快さ。

+0

ありがとうこの説明のために!私のインデックスが11である理由を説明することもできますか?moreValuesで値を宣言すると、10桁しかありませんか?私の教科書は実際にこれを説明する良い仕事をしておらず、私は主にそこから作業しています。 – iMagicMango

0

試してみてください。

for (int counter = moreValues.length; counter >= 1; counter--) 
{ 
    cubedNumber = Math.pow(counter,3); 
    System.out.println(moreValues[counter-1] + " cubed is " + cubedNumber); 
} 
関連する問題