2010-08-12 8 views
0
for(int m=0; m< checkBoxValue.length ; m++) 
{ 
    System.out.println("check box in model class"+checkBoxValue[m]+"\n"); 

} 

이 루프는 배열에 두 개의 값을 인쇄합니다. 값을 출력하지만 그 이후에는 배열 바운드 예외가 표시됩니다.Java Array 개념

+0

어떻게 'checkBoxValue'를 선언 했습니까? – Gopi

+0

스 니펫은 배열을 사용하기 전에 값으로 초기화한다고 가정하고 예외없이 작동해야합니다. – jerjer

+0

@ 모론 : 편집 내용은 무엇입니까? – chiccodoro

답변

1

여기에 예외가 발생 했습니까?

+2

포함 된 코드에 아무런 문제가 없습니다. 그의 예외는 다른 곳에서 발생해야합니다. – Gunslinger47

+0

@Gun : _Her_. 칼 파나는 여자 아이의 이름이다. 하지만 누가 알지 :-) –

2

잘못된 경로에있는 것 같습니다. for 루프에서 중단 점을 설정하고 코드를 디버그 한 다음 단계별로 검토하는 것이 가장 좋습니다. 당신이 "그 후 "를 말할 특히 때문에 당신이 작동해야

0

코드 :-) 루프 그 후 코드 을 검토 할 수 있습니다 ...

를 예외가 발생되는 경우 발표 할 예정이다 배열 초기화를 올바르게 수행했다면 괜찮습니다.

+0

'부적절한'초기화조차도 이런 종류의 오류가 발생합니다.OP는 어레이의 두 값이 출력되므로 어레이가 구성되고 (적어도) 두 개의 요소가 포함되어 있다고 말합니다. –

1

오 ... 마치 엉망진창처럼 보입니다. 정보는 매우 추상적으로 보입니다. 당신은 구체적 일 필요가 있습니다. 여기에 더 많은 코드를 줄 수 있습니다. 내가 생각할 수있는 원인 중 하나는 멀티 스레딩입니다.

멀티 스레드 응용 프로그램에서만이 트릭을 수행 할 수 있습니다.. 그렇다면 checkBoxValue 변수의 원본 객체에 동기화를 제공하는 것이 좋습니다.

하는 데 도움이

희망 ....

+0

+1 다른 스레드를 사용할 때 예외가 발생할 수 있습니다. –

+1

어떻게하면 멀티 스레딩이이 예외를 일으킬 수 있는지 이해할 수 없습니다. 표시된 코드에는 배열에 대한 참조가 있습니다. 다른 스레드가 해당 배열의 길이를 수정하는 것은 불가능합니다. 데이터 유형이 목록 인 경우 다른 스레드가 목록의 항목을 동시에 제거하는 상황에서 목록의 크기가 어떻게 바뀔 수 있는지 확인할 수있었습니다. 그러나 배열의 길이는 변경할 수 없습니다. 멀티 스레딩이 어떻게 예외를 발생시킬 수 있는지 설명하십시오. – Alderath

+0

-1, 나는 Alderath의 의견을지지합니다. – chiccodoro

0

게시 된 코드는, ArrayIndexOutOfBoundsException가 발생하지 않아야합니다. 대체로 뒤에 배열의 잘못된 색인에 액세스하는 무언가를 하고 있습니다.

질문에 표시된 코드에서 checkBoxValue [m] 객체 중 하나의 toString() 메서드가 예외를 throw하는 경우에만 ArrayIndexOutOfBoundsException을 throw 할 수 있습니다.

0

toString()checkBoxValue -class (이 클래스를 식별하는 데 도움이되는 배열 초기화 프로그램) 메서드를 재정의했을 수 있습니다. 이 이론에 따르면, 배열의 첫 번째 두 요소 (인쇄 됨)에 대해 구현이 올바르게 작동하고 배열의 세 번째 요소에 대해 예외가 발생할 수 있습니다.

이 경우 오류 설명이 나타날 수 있습니다. 이 루프는 배열에 두 개의 값을 인쇄합니다. 그것은 값을 출력하지만 그 후에 배열 바운드 예외 예외를 보여줍니다