[자바JAVA]1071 : [기초-반복실행구조] 0 입력될 때까지 무한 출력하기1(설명)

문제 1071 : [기초-반복실행구조] 0 입력될 때까지 무한 출력하기1(설명)

정수가 순서대로 입력된다. (-2147483648 부터 +2147483647까지, 단 개수는 알 수 없다.)

0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
while( ), for( ), do while( ) 등의 반복문을 사용할 수 없다.

참고
goto 명령문을 사용하면 간단한 반복 실행을 만들 수 있다.
반복 실행 부분을 빠져나오기 위해(즉 무한 반복을 방지하기 위해)
반복 실행 되는 도중에 조건을 검사해야 한다.

goto 이름:
이 명령은 이름: 이 작성된 곳으로 프로그램의 실행 흐름을 바꾸어 준다.

“이름:” 과 같이 콜론(:)이 붙어있는 부분을 이름표(label, 레이블)라고 한다.
레이블은 특별한 선언 없이 사용할 수 있으며 언더바(_)나 영문자로 시작하면 된다.
레이블은 한 단어처럼 공백없이 모두 붙여 써야 한다.

switch( ) … case … : … break; 에서
case … : 도 일종의 레이블이라고 생각할 수 있다.

goto 레이블:
명령을 사용하면 반복되는 부분을 여러 개 자유롭게 만들 수 있다.

goto 명령은 반복 실행을 만들어낼 수 있는 가장 간단한 명령이지만,
복잡하게(스파게티 코드) 사용하는 경우, 이해가 어렵고 오류가 생기기 쉽다.

  • 입력예시
    정수가 순서대로 입력된다. (-2147483648부터 +2147483647까지, 단 개수는 알 수 없다.)
1
7 4 2 3 0 1 5 6 9 10 8
  • 출력예시
    입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0이 입력되면 종료한다.
    (0은 출력하지 않는다.)
1
2
3
4
7
4
2
3




코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.Scanner;

class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int nums;

while(true){
nums = sc.nextInt();
if(nums == 0) break;
System.out.println(nums);
}
}
}




배운지식

첫번째

C언어나 C++과는 달리 자바에는 goto 문이 없습니다. 따라서 이렇게 반복문을 가리키는 이름(label)은 break 문이나 continue 문에만 사용될 수 있습니다.
출처 : http://tcpschool.com/java/java_control_etc

두번째

  • 갯수를 모르면 for반복문이 아니라 while반복문을 사용해야한다. 그리고 while반복문사용시 무한루프로 빠질 수 있으므로 나가는 조건을 꼭 확인한다.




다른 문제 풀이가 보고싶다면?