다음 Java 프로그램의 실행 결과를 쓰시오.
public class Main {
interface Operation {
int apply(int value) throws Exception;
}
static int run(Operation operation) {
try {
return operation.apply(3);
} catch (Exception e) {
return 7;
}
}
public static void main(String[] args) {
Operation first = value -> {
if (value > 2) {
throw new Exception();
}
return value * 2;
};
System.out.print(run(first) + run(value -> value + 9));
}
}모범답안
19
풀이와 판단 근거
첫 번째 run은 정수 3을 first 람다에 전달한다. 3 > 2가 참이어서 Exception이 발생하고 run의 catch가 7을 반환한다.
두 번째 람다는 예외 없이 3+9를 계산해 12를 반환한다. main의 덧셈은 두 run 호출이 각각 끝난 뒤 7+12로 수행되므로 출력은 19다.
첫 람다의 원래 반환식 value*2는 예외 때문에 실행되지 않는다.
자주 틀리는 지점
- 연산자 우선순위나 재귀 반환 순서를 생략하고 눈에 보이는 값만 바로 계산함
- 값 전달·참조 전달, 오버라이딩·오버로딩 또는 배열과 포인터의 차이를 혼동함
- 출력의 공백·줄바꿈·대소문자를 무시해 19와 다른 형식으로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.