외부 반복문 내부에 내부 반복문이 존재하는 형태를 반복문 중첩이라 한다. 반복문 자체를 반복시켜야 할 경우에 중첩을 사용한다.
내부 반복문이 종료가 되어도, 외부 반복문이 끝나지 않으면 내부 반복문은 외부 반복문의 제어변수의 크기 및 범위까지 계속해서 반복 실행하게 된다.
public class LoopNesting {
public static void main(String[] args) {
for(int dan = 2; dan <= 9; dan++) {
System.out.println("구구단 " + dan + "단");
System.out.println("--------------------");
for(int hang = 1; hang <= 9; hang++) {
System.out.printf("%d x %d = %d\\n", dan, hang, dan * hang);
}
System.out.println("--------------------");
}
}
}
문제) # UP&DOWN 게임 제작 # 1. 기준이 되는 수는 난수 범위 1~100까지로 지정한다. 2. 사용자에게 정답을 입력받아, 기준이 되는 수보다 작은 수를 입력하면 UP, 큰 수를 입력하면 DOWN이라고 출력해서 정답에 근접할 수 있도록 유도한다. 3. 승리 조건 횟수는 7회로 제한한다. 7회가 넘어가도 정답은 계속 맞출 수 있도록 작성한다. 정답을 맞췄다면, 반복문 종료와 함께 승리/패배 여부를 알려준다.
import java.util.Scanner;
public class BreakQuiz2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("*** UP & DOWN GAME ***");
System.out.println("# 1부터 100까지의 정수 중 숫자를 선택하세요.");
int secret = (int) ((Math.random() * 100) + 1);
int count = 0;
while(true) {
System.out.print("> ");
int answer = sc.nextInt();
if (answer > 100 || answer < 1) {
System.out.println("입력을 제대로 해주세요.");
continue;
}
count++;
if (answer > secret) {
System.out.println("Down");
} else if (answer < secret) {
System.out.println("Up");
} else {
System.out.println("정답입니다.");
break;
}
if(count < 7) {
System.out.println("정답 기회 " + (7-count) + "번 남았습니다.");
} else {
System.out.println("정답 기회를 모두 소진했습니다.");
System.out.println("정답을 맞춰주시기 바랍니다.");
}
}
System.out.println(count + "번 만에 맞췄습니다.");
if(count <= 7) {
System.out.println("승리했습니다.");
} else {
System.out.println("패배했습니다.");
}
sc.close();
}
}
탈출문 continue
continue문은 for문이나 while문에서 사용되며 반복문이 실행 중 continue를 만나는 순간 for문의 경우 증감식, while문의 경우 조건식으로 이동한다.
댓글