2017-12-30 27 views
-1

私はランダムな値でレストランのレストランを埋めるしたい。それ、どうやったら出来るの?空のときにnullpointerexception例外を与えてくれるからです。私は既にArraysをやろうとしていました。または、例外の解決方法クラスの配列を埋める方法は?私は配列outofboundsexceptionを解決するためにこれが必要です

private Restaurante[] restaurante= new Restaurante[100]; 

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

    String[] row = lines[i].toString().split("-"); 
    identificador[i] = Integer.parseInt(row[0]); 
    restaurante[i].setNome(row[1]); 
    restaurante[i].setLugares(Integer.parseInt(row[2])); 
    restaurante[i].setLocalidade(row[3]); 
    restaurante[i].setTipoDeComida(row[4]); 
    if (identificador[i] == this.id) {    
     linhasescritas[contador]=i; 
     contador++; 

     model.addRow(row); 
    } 
} 

例外は行内のレストラン[i] .setNome(row [1])にあります。

例外スレッドで "AWT-EventQueueの-0" のjava.lang.NullPointerException

+1

配列が空であるため、ArrayIndexOutOfBoundExceptionが発生しません。範囲外の(つまり負の値または配列の長さ以上の)インデックスにアクセスすると取得されます。配列 'lines'が配列' Restaurante'よりも長いため、おそらく 'IndexOutOfBoundsException'を取得します。例外はおそらく次のようになります: 'java.lang.ArrayIndexOutOfBounds:100' – Turing85

+0

@ Turing85によると。実際の例外を投稿した場合、誰かがあなたを助けようとしている誰かがそれが起こっている行を見ることができるように役立つかもしれません。 'i'が> = 100になるか、またはいずれかの行に" - "の正しい数がありません。 – theFunkyEngineer

+0

私は例外をnullpointerのwrogだった。申し訳ありません –

答えて

0

あなたのエラーは、

と、アレイ全体

private Restaurante[] restaurante= new Restaurante[100]; 
ではなく、その要素のそれぞれを初期化したことです
restaurante[i] = new Restaurante(); 

したがって、NullPointerエラーが表示される

がまだ nullであるため、210

です。したがって、この行の前には、

restaurante[i] = new Restaurante(); 

が挿入され、エラーは消滅するはずです。


別の問題はlines[i].toString().split("-");は、少なくとも2つの要素を返す場合row[1]への参照のみが有効であることとすることができます。 if句などでさらに注意を払う必要があります。

+0

あなたは神人です –

-1

実際には、次のようなオブジェクト配列を宣言して塗りつぶすのがより目に見えます。

SomeData[] data; 
data = new SomeData[30]; 
for(int i=0; i<30; i++){ 
    data[i] = new SomeData(); 
    //Do some sexy setter-getter things here. 
} 

希望します。

関連する問題