2017-12-30 7 views
-1

난 무작위 값으로 배열 레스토랑을 채우고 싶다. 내가 어떻게 그럴 수 있니? 빈 때 나를 nullpointerexception 예외를 줘. 나는 이미 배열을하려고 노력했다. 그것 doenst 일을 넣어. 또는 예외클래스 배열을 채우는 방법? 나는 배열 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 (행 [1])에

예외 스레드에서 "AWT-EventQueue의-0"java.lang.NullPointerException이

+1

배열이 비어 있기 때문에 ArrayIndexOutOfBoundException을 얻지 못합니다. 범위를 벗어난 (즉, 음수 또는> = 배열의 길이) 색인에 액세스하므로 가져옵니다. 배열'lines'이 배열'Restaurante'보다 길기 때문에'IndexOutOfBoundsException'을 얻을 수 있습니다. 예외는 아마도 다음과 같을 것입니다. java.lang.ArrayIndexOutOfBounds : 100' – Turing85

+0

As @ Turing85. 실제 예외를 게시 한 경우 도움이 될 수있는 사람이 누구에게 어떤 행이 표시되는지 알 수 있도록 도움이 될 수 있습니다. 'i'가> = 100이되거나 줄 중 하나에 "-"가 없습니다. – theFunkyEngineer

+0

나는 예외가 nullpointer의 wrog이었다. 죄송합니다 –

답변

0

귀하의 오류는

으로 전체 배열

private Restaurante[] restaurante= new Restaurante[100]; 
아니라의 각 요소를 초기화 한 것입니다
restaurante[i] = new Restaurante(); 

따라서 NullPointer 오류가 발생합니다.

restaurante[i].setNome(row[1]); 

이기 때문에 restaurante[i]은 여전히 ​​null입니다. 따라서이 줄 앞에

restaurante[i] = new Restaurante(); 

을 삽입하면 오류가 사라집니다.


다른 문제점 row[1]의 참조에만 유효 lines[i].toString().split("-"); 경우 리턴 적어도 두 요소라고 할 수있다. 너는 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. 
} 

희망 하시겠습니까?

관련 문제