코딩항해기

[오답노트/JAVA] JAVA 시험 오답풀이 본문

problem solving

[오답노트/JAVA] JAVA 시험 오답풀이

miniBcake 2024. 7. 31. 16:17

 

 

JAVA 시험 문제 중 틀린 문제가 있어 오답노트를 작성한다.

컬렉션 프레임워크가 제네릭없이 선언할 수 있고, 제네릭이 없을 때 생기는 문제에 대해서는 알았는데,

for each문을 돌릴 때 모두 동일한 타입의 값만 있어도 해당 타입으로 설정할 수 없다는 사실을 오늘 처음 알게 됐다..

(=> 기본 타입이 Object라서)

 

문제 코드

(Q. 오류가 생기는 라인을 찾고 이유를 서술하시오)

public static void main(String[] args) { 
	ArrayList datas=new ArrayList(); 
	for(int i=1;i<=5;i++) { 
		datas.add(i); // [1,2,3,4,5] 
	} 
	int total=0; 
	for(int v:datas) { 
		total+=v; 
	} 
	System.out.println("total: "+total); // total: 15 
}

 

이처럼 제네릭을 사용하지 않고 선언하면 for(int v:datas){}, for each문에서 컴파일 오류가 발생한다.

타입 불일치: 요소 유형 Object를 int로 변환할 수 없습니다.

 

제네릭을 지정하지 않을 경우 모든 타입이 들어올 수 있도록 Object 타입으로 설정되어있기 때문에 int로는 변환이 불가하다고 안내하고 있는 것을 확인할 수 있다.

 

즉, 오류가 발생하는 코드 라인은 for(int v:datas) (line : 7)이고, 해결방안은 ArrayList를 선언할 때 제네릭을 Integer타입으로 설정하면 된다.

 

추가로 틀린 부분은 디버깅표였는데, 이건 순수한 실수라... 따로 오답노트를 작성하진 않았다.

(문제에 나와있는 첫번째 줄을 생략하고 작성하며 검토하다 존재하지 않는 줄을 추가함...ㅠㅠ)

 

그 외에도 정답이었지만 아쉬웠던 답안들이 많아서 답안을 작성할 때 특정 키워드가 들어갈 수 있게 답하는 부분을 연습해야 할 것 같다.