안녕하세요
로로봉입니다 : )
오늘은 JAVA의 반복문에 대해 알아보도록 하겠습니다.
반복문은 어떤 작업이 반복적으로 수행되도록 할 때 사용되며, 반복문의 종류는 for문 while문, do-while문이 있습니다.
여기서 반복문 중에 do-while문의 다른점은 실행 후 조건을 비교하기 때문에 최소 한번은 꼭 실행된다는 것입니다.
1) for문
for문의 기본 구조는 아래와 같습니다.
for (초기화;조건식;증감식) {
// 조건식이 true일 때 수행
}
for문은 초기화 후 조건식으로 비교하고 true일 경우 내부의 수행할 코드가 실행됩니다. 실행 후에는 증감식을 통해 조건에 따른 변수를 증가하거나 감소시킵니다. 그 이후는 조건식을 다시 비교하는 반복이라고 보면 됩니다.
public static void main(String[] args) {
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
System.out.println(""+i+j);
}
for문을 활용하여 11부터 33까지 출력을 합니다. char형("")에 int형을 더하면 char형으로 출력되는 것을 볼 수 있습니다.
위의 코드를 실행한 결과는 아래와 같습니다.
11
12
13
21
22
23
31
32
33
2) while문
while문은 for문과 다르게 조건식과 수행할 {}블럭으로만 구성되어 있습니다. while문의 기본 구조는 아래와 같습니다.
while (조건식) {
// 조건식이 true일 경우 수행
}
while문의 경우 실수로 while문 안에서 조건식의 변수를 초기화하는 경우 무한 반복에 빠질 수 있으므로 주의해야 합니다.
그래서 카운터를 필요로하는 반복문인 경우에는 while문이 아닌 for문을 권장합니다.
while문을 이용하여 1부터 10까지 출력해보도록 하겠습니다.
public static void main(String[] args) {
int i=1;
while(i<11) {
System.out.println(i++);
}
}
위의 코드를 실행한 결과는 아래와 같습니다.
1
2
3
4
5
6
7
8
9
10
3) do-while문
do-while문의 기본구조는 while문과 같으나 블럭부분이 먼저 실행되고 조건식을 비교하게 됩니다.
기본 구조는 아래와 같습니다.
do {
// 조건식이 ture일 경우 수행
} while (조건식);
아래와 같이 do-while문를 사용해보겠습니다. 입력을 받아 그대로 출력하고 'x'를 입력하는 경우 do-while문이 종료되는 것을 볼 수 있습니다.
public static void main(String[] args) throws IOException {
int input=0;
System.out.println("문장을 입력하세요.");
System.out.println("입력을 마치려면 x를 입력하세요.");
do {
input = System.in.read();
System.out.print((char)input);
} while(input != -1 && input != 'x');
}
위의 코드를 실행한 결과는 아래와 같습니다.
문장을 입력하세요.
입력을 마치려면 x를 입력하세요.
Test Message
Test Message
x
x
4) break문
break문은 주로 if문과 같이 사용되어 특정 조건을 만족하면 반복문을 벗어나도록 도와줍니다.
public static void main(String[] args) {
int sum = 0;
int i = 1;
while(true) {
if(sum > 10)
break;
++i;
sum += i;
}
System.out.println("i=" + i);
System.out.println("sum=" + sum);
}
위의 코드를 실행한 결과는 아래와 같습니다.
i=5
sum=14
sum이 10보다 커지는 경우 while문이 멈추며 아래 출력 함수가 실행되고 종료되게 됩니다.
5) continue문
continue문은 반복문 내에서만 사용될 수 있으며, 반복이 진행되는 도중에 continue문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어가게 됩니다. for문의 경우 증감식으로 이동하며, while문과 do-while문은 조건식으로 이동합니다.
continue문은 반복문 내에서 다음 반복을 계속 수행한다는 점이 break문과 다릅니다. 주로 if문과 같이 사용되어 특정 조건을 만족하는 경우에 continue문 이후의 문장들을 수행하지 않고 다음 반복으로 건너띄도록 처리할 수 있습니다.
public static void main(String[] args) {
for(int i=0;i<=10;i++) {
if(i%3==0)
continue;
System.out.println(i);
}
}
위의 코드를 실행한 결과는 아래와 같습니다.
1
2
4
5
7
8
10
3의 배수인 경우 건너띄도록 처리가 됩니다.
6) 반복문에 이름 붙이기
여러 반복문이 중첩되어 있을 때 반복문 앞에 이름을 붙이고 break문과 continue문에 이름으로 해당 반복문을 지정하여 break하거나 continue할 수 있습니다.
public static void main(String[] args) {
Loop1 : for(int i=2;i<=9;i++) {
for(int j=1;j<=9;j++) {
if(j==5)
break Loop1;
System.out.println(i+"*"+j+"="+i*j);
}
}
}
위의 코드를 실행한 결과는 아래와 같습니다.
2*1=2
2*2=4
2*3=6
2*4=8
Loop1을 j가 5일경우 벗어나기 때문에 전체 루프가 중단되는 것을 볼 수 있습니다.
break Loop1을 break로 변경하고 실행하면 아래와 같은 결과를 얻을 수 있습니다.
2*1=2
2*2=4
2*3=6
2*4=8
3*1=3
3*2=6
3*3=9
3*4=12
4*1=4
4*2=8
4*3=12
4*4=16
5*1=5
5*2=10
5*3=15
5*4=20
6*1=6
6*2=12
6*3=18
6*4=24
7*1=7
7*2=14
7*3=21
7*4=28
8*1=8
8*2=16
8*3=24
8*4=32
9*1=9
9*2=18
9*3=27
9*4=36
j로 돌고있는 반복문만 break되어 j가 5일 경우 멈추고 다음 i 반복문이 실행되는 것을 볼 수 있습니다.
이번에는 break로 변경했던 부분에 countinue Loop1로 변경하고 실행해보면 아래와 같은 결과를 얻을 수 있습니다.
2*1=2
2*2=4
2*3=6
2*4=8
3*1=3
3*2=6
3*3=9
3*4=12
4*1=4
4*2=8
4*3=12
4*4=16
5*1=5
5*2=10
5*3=15
5*4=20
6*1=6
6*2=12
6*3=18
6*4=24
7*1=7
7*2=14
7*3=21
7*4=28
8*1=8
8*2=16
8*3=24
8*4=32
9*1=9
9*2=18
9*3=27
9*4=36
j가 5일 경우 Loop1 반복문으로 continue하는 것이기 때문에 다음 구구단으로 넘어가버리는 것을 볼 수 있습니다.
Loop1을 빼고 continue만으로 변경 후 실행하면 아래와 같은 결과를 얻을 수 있습니다.
2*1=2
2*2=4
2*3=6
2*4=8
2*6=12
2*7=14
2*8=16
2*9=18
3*1=3
3*2=6
3*3=9
3*4=12
3*6=18
3*7=21
3*8=24
3*9=27
4*1=4
4*2=8
4*3=12
4*4=16
4*6=24
4*7=28
4*8=32
4*9=36
5*1=5
5*2=10
5*3=15
5*4=20
5*6=30
5*7=35
5*8=40
5*9=45
6*1=6
6*2=12
6*3=18
6*4=24
6*6=36
6*7=42
6*8=48
6*9=54
7*1=7
7*2=14
7*3=21
7*4=28
7*6=42
7*7=49
7*8=56
7*9=63
8*1=8
8*2=16
8*3=24
8*4=32
8*6=48
8*7=56
8*8=64
8*9=72
9*1=9
9*2=18
9*3=27
9*4=36
9*6=54
9*7=63
9*8=72
9*9=81
이번에는 각 구구단에 5 부분만 없이 전체 다 나오는 것을 볼 수 있습니다. j가 5일 경우 수행하지 않고 다음 반복으로 넘어가기 때문입니다.
다음 자바 공부는 배열에 대해 알아보는 시간을 갖도록 하겠습니다.
좋아요 ♥ + 구독 부탁드립니다. : )
'개발 정보 > JAVA' 카테고리의 다른 글
[JAVA] 자바 다차원 배열 (0) | 2021.07.08 |
---|---|
[JAVA] 자바 배열에 대해 (0) | 2021.06.21 |
[JAVA] 자바 조건문 알아보기 (0) | 2021.06.07 |
[JAVA] 자바 연산자 알아보기 2 (0) | 2021.06.02 |
[JAVA] 자바 연산자 알아보기 1 (0) | 2021.06.01 |
댓글