[평가] 문제 오답풀이

1. 배열 data의 길이가 10인 것을 확인할 수 있다.
2. 콘솔 출력 화면을 보았을 때 3, 6, 9가 출력된 것을 알 수 있다.
3. if문의 조건식을 보았을 때 변수 v를 3으로 나눴을 때 나머지가 0이 되는 순간 출력할 수 있도록 처리되었다.
4. 답안을 확인해보았을 때 ①번은 변수가 i이므로 답안이 아닌 것을 확인
5. ②번과 ③번을 보았을 때 for문의 조건식이 동일하고 변수 v의 값이 각 3, 6, 9일 때 만족을 한다.
하지만 변수가 0일 경우에도 조건식에 만족을 하기 때문에 콘솔창의 결과와는 맞지 않아 정답이 아닌 것을 확인.
6. ④번은 for each문으로 배열 및 컬렉션을 항복의 개수만큼 반복하는 반복문이다. 따라서 0부터 시작이 아닌
data의 1부터 마지막 값 10까지 반복하기 때문에 3, 6, 9일 때 만족을 하여 정답인 것을 확인
| for each문
반복실행을 하기 위해 카운터 변수와 증감식을 사용하지 않는 반복문
배열 및 컬렉션 항복의 개수만큼 반복하고, 자동적으로 for문을 빠져나간다.
구조

실행순서
1. 배열에서 가져올 첫 번째 값이 존재하는지 평가(배열)
2. 가져올 값이 존재할 때 해당 값을 변수에 저장(타입 변수)
3. 명령 실행(실행할 명령)

1. 호출의 순서를 잘 파악해야 하는 문제
2. 출력 문구 "10"+func("banana")+10 에서
1) 순서는 함수를 먼저 호출하기 때문에 함수 func의 출력함수를 먼저 호출하게 된다.
2) 출력함수와 정수형 리턴 값 10을 반환받는다.
3. main의 출력문구에 String 형식의 10 이 있기 때문에 산수 연산이 되지 않고 문자열로 출력이 된다.
따라서
1. func함수 호출 > 출력함수 문구 먼저 출력
2. main의 출력문구 출력
3. func함수 호출 부분에 리턴 값 출력
4. 나머지 문구 출력
답 : banana101010 (노란색 : func함수의 출력메서드, 빨간색 : 리턴 값)

1. 클래스 B가 부모클래스 A에게 상속받는 것을 확인
2. 메인함수에서 b 객체를 생성 후 클래스 B의 func 메서드 호출
3. 클래스 B에는 매개변수를 갖는 func 메서드가 없다.
4. 하지만 클래스 B는 클래스 A에게 상속받고 있으므로 클래스 A의 기능을 사용할 수 있다.
5. 클래스 A는 매개변수를 받는 func 메서드가 존재한 것을 확인
6. 해당 메서드의 기능을 수행하여 출력 값은 ③kiwi가 나오는 것을 확인하였다.

1. 클래스 B에서 멤버변수인 func가 private으로 캡슐화 되어있는 것을 확인
2. private으로 인해 메인 함수에서 객체 b가 호출하는 데 오류 발생
3. 클래스 B의 func() 함수 주석처리 >> 메인 함수에서 b.func() 호출 시 부모클래스의 func() 함수를 받아 호출된다.
출력결과 : apple

1. 클래스 C가 클래스 B를 상속받고, 클래스 B가 클래스 A를 상속받고 있는 상황
2. 상속 받고있는 각 클래스에는 부모클래스 A의 매개변수 생성자를 호출하고 있다.
3. 메인 함수에서 c 객체 생성 및 매개변수값 String타입의 "어흥" 값을 입력
4. 클래스 C의 매개변수 생성자를 호출하였고, 부모클래스의 생성자 또한 호출하기 때문에
1) 클래스 C에서 호출하는 부모생성자의 매개변수 "삐약"이 각 부모의 생성자를 타고올라가 먼저 출력이 되며
2) 클래스 C의 부모클래스인 B에서 출력 함수로 "야옹"이 다음으로 출력이 된다.
3) 마지막으로 자식 클래스 C에서 매개변수로 받은 "어흥"이 출력이 되는 것을 확인

1. 배열리스트 객체 al이 생성되었고, 배열리스트가 정수형으로 처리되는 것을 확인
2. 제네릭을 사용하여 <Integer>를 추가해줘야 한다.
3. 배열의 크기를 없애주어야 한다. 미리 크기가 할당되어 있으면 추후에 값이 커지게되면 밀려나거나 저장이 되지 않을 수 있다.
4. for each문에서 타입을 int형으로 변경해주어야 한다.
5. 먼저 size()메서드를 통해 배열의 길이가 출력되며, 반복문에서 배열의 값에 따라 10/ 연산을 하여 출력된다.
6. 0으로 나누게 되면 산수 연산오류가 발생하므로 오류가 발생하기 전까지 출력 후 예외 발생했을 때 문구들이 출력된다.
코드 수정 결과
package Student_Program;
import java.util.ArrayList;
public class Wasdasd {
public static void main(String[] args) {
ArrayList<Integer> al=new ArrayList<Integer>();
al.add(1);
al.add(2);
al.add(0);
al.add(-1);
al.add(-2);
try {
System.out.print(al.size()); //배열의 길이 출력
for(int obj:al) {
System.out.print(10/obj+" ");
}
}
catch(Exception e) {
System.out.print("HELLO");
}
finally {
System.out.print("JAVA");
}
System.out.print("WORLD");
}
}
출력 값
510 5 HELLOJAVAWORLD