작성
·
274
0
안녕하세요 선생님
임시반장 구하기 문제에서 몇번을 확인해봐도 오류를 발견하지 못했는데 에러가 해결이 안되서 조언 구합니다 ㅠㅠ
import java.util.*; //임시반장 구하기
class Main{
public int solution(int n, int[][] arr){
int answer=0,max=Integer.MIN_VALUE;
for(int i=1;i<=n;i++){
int cnt=0;
for(int j=1;i<=n;j++){
for(int k=1;i<=5;k++){
if(arr[i][k]==arr[j][k]){
cnt++;
break;
}
}
}
if(cnt>max){
max=cnt;
answer=i;
}
}
return answer;
}
public static void main(String[] args)
{
Main T = new Main();
Scanner kb=new Scanner(System.in);
int n=kb.nextInt();
int[][] arr=new int[n+1][6];
for(int i=1;i<=n;i++){
for(int j=1;j<=5; j++){
arr[i][j]=kb.nextInt();
}
}
System.out.print(T.solution(n,arr));
}
}
여기까지가 소스이구 실행했을 때 다음과 같은 메세지가 떴습니다.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6 at Main.solution(Main.java:10) at Main.main(Main.java:39)
왜 계속 에러가 뜨는것일까요?ㅠ 조언 부탁드리겠습니다
답변 1
1
안녕하세요.
제가볼때 solution 함수에서 2중, 3중 포문돌릴때 중간 조건을 j, k를 넣어야하는데
둘다 i 를 넣으신거같네요..
i,j 같은거는 비슷하게 보이는 경향이 있어 차라리 i, k, m ,p 등을 쓰세용~
ArrayIndexOutOfBoundsException 해당 에러는 참조하려는 인덱스가 선언하신 배열을 넘어서거나 없는 배열의 인덱스를 참조하려할때 나옵니다.