기출문제/정보처리기사

2020년 4회 정보처리기사 기출문제 67번

엉클지니 2025. 4. 3. 18:49

67. 다음 자바 코드를 실행한 결과는?

x7 y0

x6 y-1

x7 y-1

 Unresolved compilation problem 오류 발생

 

 

 

  • 해설을 드리겠습니다. 😊
    int x = 1, y = 6;
    while (y--) {
        x++;
    }
    System.out.println("x = " + x + " y = " + y);
    
    1. 변수 초기화
    • x는 1로 초기화됩니다.
    • y는 6으로 초기화됩니다.
    2. while 루프 분석
    • while (y--)는 후위 감소 연산자 (y--)를 사용하고 있습니다.
      • 후위 감소는 y의 값을 먼저 사용하고, 그 후에 y를 1 감소시키는 연산자입니다.
      • 루프는 y가 0보다 클 때만 실행되며, y가 0이 되면 루프가 종료됩니다.
    루프 동작 과정
    • 첫 번째 반복:
      • y는 6입니다. x++ 실행 후 x는 2가 됩니다.
      • y는 5로 감소합니다.
    • 두 번째 반복:
      • y는 5입니다. x++ 실행 후 x는 3이 됩니다.
      • y는 4로 감소합니다.
    • 세 번째 반복:
      • y는 4입니다. x++ 실행 후 x는 4가 됩니다.
      • y는 3으로 감소합니다.
    • 네 번째 반복:
      • y는 3입니다. x++ 실행 후 x는 5가 됩니다.
      • y는 2로 감소합니다.
    • 다섯 번째 반복:
      • y는 2입니다. x++ 실행 후 x는 6이 됩니다.
      • y는 1로 감소합니다.
    • 여섯 번째 반복:
      • y는 1입니다. x++ 실행 후 x는 7이 됩니다.
      • y는 0으로 감소합니다.
    • 루프 종료:
      • 이제 y는 0이 되어 루프가 종료됩니다.
    3. System.out.println 출력
    • x는 루프가 끝난 후 7이고, y는 y-- 연산 후 0입니다.
    • 하지만 여기서 중요한 점은 **y--**가 루프 종료 후 0으로 출력된다는 것입니다. 왜냐하면 y--는 후위 연산자여서 루프가 진행되면서 y가 0이 되기 직전에 감소됩니다. 결국, y는 0이 되고 출력문에서는 y = 0으로 출력됩니다.
    4. 결과
    • x의 값은 7이고, y의 값은 0입니다.
    • 따라서 출력 결과는 **x = 7 y = 0**이 됩니다.
    정답 분석
    System.out.println("x = " + x + " y = " + y);
    
    위 코드에서는 출력문법 자체에는 문제가 없지만, 일부 IDE나 설정에 따라 자주 발생하는 오류 중 하나입니다. 특히 + 연산자를 사용하여 문자열을 연결하는 과정에서 종종 실수가 발생할 수 있습니다. 예를 들어:위와 같이 + 연산자가 빠진 형태로 작성되면 **컴파일 오류(Unresolved compilation problem)**가 발생합니다. 이런 문제가 발생하는 이유는 문자열을 연결하는 부분에서 잘못된 문법을 사용했기 때문입니다.따라서, 주어진 코드에서 **"Unresolved compilation problem 오류"**가 발생하는 원인은 잘못된 문법 사용에 있습니다.6. 정리
    1. x++는 x를 1씩 증가시킵니다.
    2. y--는 y의 값을 먼저 사용하고, 그 후에 y를 1 감소시킵니다.
    3. while 루프가 종료된 후 x = 7, y = 0이지만, 잘못된 문법으로 오류가 발생합니다.
    따라서, 정답은 ❹입니다!
  • **정답은 ❹ 'Unresolved compilation problem 오류 발생'**입니다.
  • 5. 결론
  • System.out.println("x = " x + " y = " + y);
  • 그런데, 문제에서 제공한 선택지 중에서 "Unresolved compilation problem" 오류가 발생한다고 표시된 이유는, 출력 문법이 잘못되어 있습니다.
  • System.out.println("x = " + x + " y = " + y);
  • while (y--) { x++; }
  • int x = 1, y = 6;
  • 주어진 Java 코드는 다음과 같습니다:
반응형