2017-05-03 8 views
-2

最初のheres番目のコードセグメント。範囲外の配列ですが、早いものから1つ先まで

double array [][]= new double [10000][11]; 

    double test=333; 

    array[0][0]=300; 
    array[0][1]=400; 
    array[0][2]=500; 
    array[0][3]=600; 
    array[0][4]=700; 
    array[0][5]=200; 
    array[0][6]=200; 
    array[0][7]=200; 
    array[0][8]=200; 
    array[0][9]=200; 
    array[0][10]=200; 




    int tiere =0; 

    int i=0; 

    for (int stelle=0;array[i][stelle]!=0;stelle++){ 

     tiere++; 
    } 
    System.out.println(tiere); 


    if (tiere<11) test=1; 
    else test=array[0][0]; 

    System.out.println(test); 


} 
} 

私は、使用されている行の量とその値が戻ってくることを示しています。しかし、11の場合は、最大の "配列の範囲外"何が間違っている失敗ですか?

+3

は、[array [i] [stelle]!= 0; stelle ++ ' –

+0

配列インデックスは、配列に' 11'要素がある場合は '0'で始まり、最後のインデックスは' 10'で、 '11'は範囲外です。 – julekgwa

+0

インデックス11が有効でアクセス可能であることが期待されますか?どうして? – Tom

答えて

1

範囲外のエラーを避けるために、有効なループをループするようにforループを変更する必要があります。 forループの中にifチェックを入れてください!= 0

for (int stelle=0; stelle < array[i].length; stelle++) 
{ 
    if(array[i][stelle] != 0) 
    { 
     tiere++; 
    } 
} 
+0

ありがとうございました今、それは完璧に動作します –

+0

@ Jim_Beam420あなたの問題を解決するのに十分な答えがあれば、親切に受け入れられたとマークしてください。 stackoverflow.com/help/accepted-answer – fujy