반복문이란 주어진 조건이 참인 경우 혹은 주어진 횟수만큼 반복적으로 프로그램을 수행 합니다.
프로그램이 처리하는 코드의 많은 부분이 반복적으로 수행되는 형태가 많으므로 가장 많이 사용되는 제어문 입니다.
주어진 조건이 참인 동안 수행되는 반복문 입니다.
while(조건식) {
조건이 참인 동안 반복적으로 실행되는 명령문;
}
while(n > 0) {
sum += n;
n--;
}
public class While {
public static void main(String[]args) {
int age;
Scanner sc = new Scanner(System.in);
while(true) {
System.out.print("나이를 입력 하세요 : ");
age = sc.nextInt();
if (age > 0 && age < 200) break;
else System.out.println("나이를 잘못 입력 하셨습니다. ");
}
}
}
int treeHit = 0;
while (treeHit < 10) {
treeHit++;
System.out.println("나무를 " + treeHit + "번 찍었습니다.");
if (treeHit == 10) {
System.out.println("나무 넘어갑니다.");
}
}
먼저 루틴을 수행하고 조건을 나중에 비교 합니다.
해당 루틴이 한번은 수행되어야 하는 경우 사용하며 while문으로 대체 가능 합니다.
do {
한번은 무조건 수행되고 조건이 참인 경우 반복적으로 수행되는 루틴
} while(조건식);
public class While {
public static void main(String[]args) {
int age;
do {
System.out.print("나이를 입력 하세요 : ");
Scanner sc = new Scanner(System.in);
age = sc.nextInt();
} while(age <= 0 || age >= 200);
}
}
for문내에 초기식, 조건식, 증감식에 대한 식을 가지고 있는 유한의 갯수를 반복 수행할 때 유용하게 사용 됩니다.
for문내의 초기식, 조건식, 증감식은 각각 생략 할 수 있습니다.
for문에서 실행될 명령문이 한 중인 경우 중괄호를 생략 할 수 있습니다. (조건문도 동일)
for(초기식;조건식;증감식) {
참인 동안 반복적으로 실행되는 명령문;
}
public static void main(String[]args) {
for (int i = 1; i <= 100; i++) {
System.out.printf("%4d", i);
if (i % 10 == 0) System.out.println();
}
System.out.println();
}
public static void main(String[]args) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.print("* ");
}
System.out.println();
}
}
public static void main(String[]args) {
for (int i = 2; i < 10; i++) {
for (int j = 1; j < 10; j++) {
System.out.printf("%d x %d = %d\n", i, j, (i*j));
}
System.out.println();
}
}
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i <= n*n; i++) {
System.out.printf("%3d", i);
if(i % n == 0) System.out.println();
}
}
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n;j++) {
System.out.print("* ");
}
System.out.println();
}
break 문은 루프 내에서 사용하여 해당 반복문을 완전히 종료시킨 뒤, 반복문 바로 다음에 위치한 명령문을 실행합니다.
즉 루프 내에서 조건식의 판단 결과와 상관없이 반복문을 완전히 빠져나가고 싶을 때 사용합니다.
주로 반복문에서 사용되며, switch 문의 case를 끝낼 때도 사용 됩니다.
continue 문은 루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 해줍니다.
보통 반복문 내에서 특정 조건에 대한 예외 처리를 하고자 할 때 자주 사용됩니다.
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
for (int j = 0; j < i+1;j++) {
System.out.print("* ");
}
System.out.println();
}
}
public static void main(String[] args) {
int rand1, rand2;
int cnt = 0;
while(true) {
cnt++;
rand1 = (int) ((Math.random() * 6) + 1); // 랜덤 함수는 실수형으로 값이 생성되므로 형변환이 필요.
rand2 = (int) ((Math.random() * 6) + 1);
if((rand1 + rand2) == 12) {
System.out.printf("무인도를 %d 번만에 탈출 합니다.\n", cnt);
break;
} else {
System.out.println("주사위의 합이 " + (rand1 + rand2) + "입니다.");
}
}
}
public class Main {
public static void main(String[] args) {
int[] lotto = new int[6];
int val, index = 0;
boolean isExist = false;
while(true) {
val = (int)((Math.random() * 45) + 1);
for (int i = 0; i < 6; i++) {
if (lotto[i] == val) isExist = true;
}
if(!isExist) lotto[index++] = val;
if(index == 6) break;
isExist = false;
}
for(int i = 0; i < 6; i++) {
System.out.print(lotto[i] + " ");
}
System.out.println();
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int n = sc.nextInt();
for (int i = 0; i <= n * n; i++) {
System.out.printf("%4d", i);
if (i % n == 0) System.out.println();
}
}
}