[Java] 11. do-while문, continue문
do-while문은 '먼저 처리하고(do) 난 다음에 비교하는것(while)'이 특징이다. 그래서 조건비교에서 조건을 만족하지 않더라도 처리를 먼저하고 조건빅가 이루어지고, 최소 한 번은 실행된다.
다음은 do-while문의 구조이다.
do { 실행문; } while(조건식); |
실행순서: 1. 실행문, 2. 조건식
다음은 do-while문을 이용하여 1부터 10까지의 합을 구하는 프로그램이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package mymain;
public class _5_dowhile문1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//10까지의 합
int sum=0;
int i =0;
do
{
//누적식
sum=sum+i;
//증가식
i++;
}
while(i<=10);
System.out.println(sum);
}
}
|
cs |
실행결과는 55이다.
sum=0, i=0인 상태에서 sum=sum+i; 명령이 실행되고 그 다음으로 i가 1씩 증가한다. 이것을 i가 10보다 작거나 같을 때까지 하므로 sum은 1부터 10까지의 합인 55이다.
다음은 do-while문을 이용하여 단을 입력받아 그 단에 해당되는 구구단을 출력하는 프로그램이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package mymain;
import java.util.Scanner;
public class _5_dowhile문2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int dan;//단
String yn="y"; //또 할지 말지에 대한 여부
do {
System.out.print("단을 입력하시오:");
dan=scan.nextInt();
//dan(2~9)에 대한 유효성 검증
if(dan>=2 && dan<=9) {
System.out.printf("---[%d]단 출력---\n", dan);
for(int i=1;i<=9;i++) {//i=1, 2, 3,...,9
System.out.printf("%d×%d=%d\n", dan,i,dan*i);
}
//계속할 지에 대한 여부
System.out.print("계속 하시겠습니까?(y/n)");
yn=scan.next();
//yn="y" or "Y"
//yn="n"
//문자열 비교는 ==사용하면 안됨
//=>yn.equals("y")사용
//입력된 값이 "y" 또는 "Y"이면, do 문으로 이동
}else
System.out.println("단은 2~9 사이의 숫자입니다.");
}while(yn.equals("y")||yn.equals("Y"));
System.out.println("---End---");
}
}
|
cs |
다음은 이 프로그램을 실행한 결과이다.
단을 입력하시오:5 ---[5]단 출력--- 5×1=5 5×2=10 5×3=15 5×4=20 5×5=25 5×6=30 5×7=35 5×8=40 5×9=45 계속 하시겠습니까?(y/n)n ---End--- |
do 에서 2에서 9 사이의 정수값을 입력받아 for문으로 전달되어 for문이 그 단을 출력한다. 단의 출력이 끝나면 계속 하겠는가?를 묻는데 y를 입력하면 단을 입력하라고 뜨고, n을 입력하면 종료된다.
*문자열이 같은지 비교할 때는 ==를 사용하는 것이 아닌 [문자열변수.equals("비교문자")]를 사용해야 한다.
continue문
continue문은 반복문을 빠져나가지 않고, 다음 반복으로 제어를 변경한다.
while문, do-while문은 조건식으로, for문은 증감식으로 제어권이 이동된다.
다음은 continue문을 이용하여 1부터 10까지의 홀수들의 합을 구하는 프로그램이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package mymain;
public class _6_continue문 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0;
for(int i=1;i<=10;i++) {
if(i%2==0) continue;//현재 명령을 종료하고 다음 제어식(i++)으로 이동
System.out.println("i="+i);
sum=sum+i;
}
System.out.println(sum);
}
}
|
cs |
이 프로그램의 실행결과는 다음과 같다.
i=1 i=3 i=5 i=7 i=9 25 |
for문 안에서 2로 나눈 나머지가 0(짝수)이면 continue문을 실행시켜서 현재 명령을 종료하고 다음 제어식(i++)으로 이동한다.
다음은 do-while문과 continue문을 이용한 구구단 출력 프로그램이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package mymain;
import java.util.Scanner;
public class _5_dowhile문3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int dan;//단
String yn="y"; //또 할지 말지에 대한 여부
do {
System.out.print("단을 입력하시오:");
dan=scan.nextInt();
//dan(2~9)에 대한 유효성 검증
if(!(dan>=2 && dan<=9)) {// or if(dan<2||dan>9)
System.out.println("단은 2~9사이의 숫자입니다.");
//현재 조건상의 명령을 종료하고 다음 제어식으로 이동
continue;
}
//정상코드
System.out.printf("---[%d]단 출력---\n", dan);
for(int i=1;i<=9;i++) {//i=1, 2, 3,...,9
System.out.printf("%d×%d=%d\n", dan,i,dan*i);
}
//계속할 지에 대한 여부
System.out.print("계속 하시겠습니까?(y/n)");
yn=scan.next();
//yn="y" or "Y"
//yn="n"
//문자열 비교는 ==사용하면 안됨
//=>yn.equals("y")사용
//입력된 값이 "y" 또는 "Y"이면, do 문으로 이동
}while(yn.equals("y")||yn.equals("Y"));
System.out.println("---End---");
}
}
|
cs |
이 프로그램의 실행결과(정상적인 단 입력)는 앞에서 했던 구구단과 같다.
여기서 continue문은 단을 입력할 때 2~9 사이의 숫자가 아닌게 입력되면 "단은 2~9 사이의 숫자입니다"를 출력하고 다시 단을 입력하라는 명령으로 돌아가게 한다.
'Coding(Java) > Java(이론)' 카테고리의 다른 글
[Java] 13. 클래스의 정의와 메소드 (0) | 2021.09.02 |
---|---|
[Java] 12. 다중반복문, break&continue label (0) | 2021.08.31 |
[Java] 10.while문 (0) | 2021.08.25 |
[Java] 9. for문 (0) | 2021.08.24 |
[Java] 8. switch문 (0) | 2021.08.23 |