2012-12-12 2 views
-1

아래에서 개발중인 코드가 있습니다. 두 개의 배열 목록을 반복하고 싶습니다. 모든 항목을보고 싶은 첫 번째 목록, 두 번째 항목은 매 3 번째 항목 만보고 원하는 항목과 일치하는지보고 싶습니다. 일치하는 경우 두 번째 목록의 다른 두 항목을 비교하고 싶습니다. 이 코드의 문제점은 "int result1 ="라인에 있습니다. 왜 범위를 벗어나는지 이해할 수 없습니다. 도움이 많이 감사!배열 목록 경계 밖으로 루프

for (int i = 0; i < array1.size(); i++){ 
    for (int j = 3; j <array2.size(); j = j + 3) { 
     if ((array1.get(i)).equals(array2.get(j-3))){ 
      int result1 = array2.get(j-1).compareTo(array2.get(j-2)); 
     } 
    } 
} 
+5

잘못된 오류 보고서. 신고 한 코드는 범위를 벗어난 인덱스를 트리거하지 않습니다. 모든 것을 공유 했습니까? –

+0

예 def는, 이것은 오류이며 그것은 int result1 라인에 돌아옵니다 ... "main"스레드의 예외 java.lang.IndexOutOfBoundsException : – Caz

+0

int 결과 행을 주석 처리하면 제대로 작동하지만, 오류 없음 – Caz

답변

1

이것은 대답이 아닌 확장 된 주석입니다.

게시 된 코드가 명시된 예외를 생성 할 수 없음이 분명합니다. 다른 일이 일어나고 있습니다. 예외를 생성하는 Simple, Self-Contained, Correct Example을 준비해야합니다. 다음은 게시 한 코드를 기반으로 문제를 재현하지 않는 프로그램의 예입니다. 비슷한 것을 게시해야하지만 실제 코드를 충분히 사용하여 예외를 가져와야합니다.

import java.util.ArrayList; 
import java.util.List; 

public class Test { 
    public static void main(String[] args) { 
    List<Integer> array1 = new ArrayList<Integer>(); 
    List<Integer> array2 = new ArrayList<Integer>(); 
    for (int i = 0; i < 100; i++) { 
     array1.add(0); 
     array2.add(0); 
    } 
    int result = 0; 
    for (int i = 0; i < array1.size(); i++) { 
     for (int j = 3; j < array2.size(); j = j + 3) { 
     if ((array1.get(i)).equals(array2.get(j - 3))) { 
      int result1 = array2.get(j - 1).compareTo(array2.get(j - 2)); 
      result += result1; 
     } 
     } 
    } 
    System.out.println(result); 
    } 
} 
+0

내가 한 것은 예외를 던지고있는 일부를 완전히 제거한 것입니다. if 비교 대신에 문장을 사용하면 완벽하게 작동합니다. 어쨌든 모든 시간 내 주셔서 감사합니다! – Caz

관련 문제