QUESTION 40
Given:
10. int x = 0;
11. int y = 10;
12. do {
13. y--;
14. ++x;
15. } while (x < 5);
16. System.out.print(x + "," + y);
What is the result?
A. 5,6
B. 5,5
C. 6,5
D. 6,6
Answer: B
------------------------------------------------------------------------------------
먼저 이 문제에서는 위의 코드에 대한 결과로 옳은것을 선택하는 문제입니다.
현재 위 코드를 보시면 반복문이 보이는데요, 이 반복문은 저희가 자바시간에 배운 반복문과는 차이가 있다는것을 알 수 있습니다.
저희가 그동안 사용했던 반복문과는 다른 형태를 띄고 있는데요, 위 코드에 쓰인 반복문은
C언어에서 사용하는 반복문 작성기법중 하나로, while문과 for문 do~while문이 있는데 그중 제일 마지막인 do~while문 입니다.
먼저 이 반복문이 생소하신 분도 있을테니 위의 반복문이 어떤식으로 작동을 하는지 알아보겠습니다.
do
{
문장
}
while (조건식);
의 형태로 먼저 문장을 먼저 수행하고 난 뒤에 조건식을 수행하여 해당 조건식이 참인지 거짓인지 판단을 한 이후
참이면 다시 문장을 반복수행하게 되고, 거짓일 경우에는 문장을 재 수행하지 않고, 인터프린터 방식에 의해서
아래에 위치한 코드를 수행하게 됩니다. 다음 그림?을 참고하겠습니다.
|
|
문장 ◀-----+
| | (참)
| |
| |
| |
조건식------+
|
|
| (거짓)
|
▼
이와같은 순서로 반복문을 실행하게 됩니다. while과 do~while문의 차이라고 한다면 조건식을 먼저 수행하느냐, 먼저 수행하지 않느냐의 차이입니다.
따라서 이 반복문을 생행하는 순서대로 결과를 유추하면 다음과 같습니다.
1번째 반복문 실행 : x = 1 , y = 9
조건문 : 참
2번째 반복문 실행 : x = 2 , y = 8
조건문 : 참
3번째 반복문 실행 : x = 3 , y = 7
조건문 : 참
4번째 반복문 실행 : x = 4 , y = 6
조건문 : 참
5번째 반복문 실행 : x = 5 , y = 5
조건문 : 거짓, 더이상 반복문을 수행하지 않는다.
출력문을 만나서 x값과 y값을 출력한다.
따라서 실제 결과값은 "5,5" 가 됩니다. 때문에 답은 B가 됩니다.
'Java' 카테고리의 다른 글
Collection 개요 (0) | 2013.07.25 |
---|---|
SCJP 39번 문제 try ~ catch문의 finally (0) | 2013.07.25 |
SCJP 30번 문제 File객체의 파일 및 디렉토리 생성 / 디렉토리 변경 (0) | 2013.07.25 |
확장 For문의 활용(집합체에 적용시켜 사용하기) (0) | 2013.07.25 |
Arrarys클래스의 sort() 메소드 및 SCJP 49번 문제 (0) | 2013.07.25 |