(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

while문은 반복을 위한 문장으로, 조건을 만족하는 동안 블록 안의 내용을 계속 반복 실행하고, 조건을 만족하지 않는 경우 해당 블록을 빠져나온다. 반드시 블록 안의 조건식의 결과값을 변화시키는 문장이 필요하며, 조건이 잘못 처리될 경우 무한 루프에 빠질 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Main {
    public static void main(String[] args) {
        int num = 1;
        
        System.out.println("[1부터 10까지 정수 출력]");
        
        while(num <= 10) {
            System.out.println(num++);
        }
        
        System.out.println("종료!");
    }
}
cs

Line 3 : 정수형 변수 num 선언 후 1로 초기화

Line 5 : 문자열 출력

Line 7 : num이 10보다 작거나 같은 동안 블록 안의 내용 반복

Line 8 : num의 값 출력 후 num을 1 증가

Line 11 : 문자열 출력

 

■ while문 무한 루프

- while문은 조건을 만족하는 동안 계속해서 반복 실행되는데, 만약 조건문을 계속해서 만족하게 된다면 while문을 빠져나오지 못하고 계속 실행하는 무한 루프에 빠지게 된다.

1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        int num = 1;
        
        while(num > 0) {
            System.out.println(num++);
        }
    }
}
cs

Line 3 : 정수형 변수 num 선언 후 1로 초기화

Line 5 : num이 0보다 큰 동안 블록 안의 내용 반복

Line 6 : num의 값 출력 후 num을 1 증가

※ num의 값은 무조건 0보다 크므로 무한 루프에 빠지게 된다.

 

■ while문 중첩

- while문 안에 while문을 포함시킨 것으로, 반복 구조 내에서 또 다른 반복 구조가 형성된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main {
    public static void main(String[] args) {
        int a = 1, b = 1;
        
        while(a <= 3) {
            System.out.println("[a = " + a + "일 때]");
            
            while(b <= 2) {
                System.out.println("b = " + b);
                ++b;
            }
            
            ++a;
            b = 1;
        }
    }
}
cs

Line 3 : 정수형 변수 a, b 선언 후 각각 1로 초기화

Line 5 : a가 3보다 작거나 같은 동안 블록 안의 내용 반복

Line 6 : a의 값 출력

Line 8 : b가 2보다 작거나 같은 동안 블록 안의 내용 반복

Line 9 : b의 값 출력

Line 10 : b를 1 증가

Line 13 : a를 1 증가

Line 14 : 내부의 while문을 빠져나오면 b를 다시 1부터 출력해 주기 위해 b를 1로 초기화

a b
1 1
1 2
2 1
2 2
3 1
3 2

 

'Java' 카테고리의 다른 글

자바(Java) for문  (0) 2020.06.26
자바(Java) do-while문  (0) 2020.06.26
자바(Java) switch-case문  (0) 2020.06.25
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

switch-case문은 case 뒤의 값과 일치하는 경우 분기하는 조건 분기문이다. break를 통해 switch-case문을 빠져나갈 수 있고, default를 통해 if-else if-else문의 else처럼 case 이외의 조건을 처리할 수도 있다. case 뒤에는 정수나 문자만 사용할 수 있었지만, JAVA 7 버전부터 문자열도 사용할 수 있게 되었다.

 

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
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("월 입력 : ");
        int month = keyboard.nextInt();
        
        switch(month) {
        case 1 :
        case 3 : 
        case 5 : 
        case 7 : 
        case 8 : 
        case 10 : 
        case 12 : 
            System.out.println(month + "월은 31일까지 있습니다.");
            break;
        case 4 : 
        case 6 : 
        case 9 : 
        case 11 : 
            System.out.println(month + "월은 30일까지 있습니다.");
            break;
        case 2 :
            System.out.println(month + "월은 28일까지 있습니다.");
            break;
        default : 
            System.out.println("잘못된 값을 입력하였습니다.");
            break;
        }
    }
}
cs

Line 8 : 정수를 입력받아 변수 month에 저장

Line 10 : month에 따른 분기

Line 11 ~ 17 : month가1, 3, 5, 7, 9, 10, 12 중 하나인 경우, Line 18 ~ 19 실행 후 Line 33으로 이동

Line 20 ~ 23 : month가 4, 6, 8, 11 중 하나인 경우, Line 24 ~ 25 실행 후 Line 33으로 이동

Line 26 : month가 2인 경우, Line 27 ~ 28 실행 후 Line 33으로 이동

Line 29 : month가 1~12의 값이 아닌 경우, Line 30 ~ 31 실행 후 Line 33으로 이동

'Java' 카테고리의 다른 글

자바(Java) do-while문  (0) 2020.06.26
자바(Java) while문  (0) 2020.06.26
자바(Java) if문 (if, if-else, if-else if-else)  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 비트 연산자  (0) 2020.06.24

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

if문은 어떤 조건의 참, 거짓 여부를 판단하여 실행을 제어하는 구조이다. 참은 true, 거짓은 false로 표현한다.

 

■ if

- 조건식이 참인 경우에만 중괄호 내용을 실행 (내용이 한 줄인 경우에는 중괄호를 빼고 사용하기도 한다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("정수 입력 : ");
        int num = keyboard.nextInt();
        
        if(num > 0) {
            System.out.println(num + "은 자연수");
        }
        
        System.out.println("프로그램 종료");
    }
}
cs

Line 8 : 정수를 입력받아 변수 num에 저장

Line 10 : num의 값이 0보다 큰 경우, Line 11 실행 후 Line 14로 이동

 

■ if-else

-  조건식이 참인 경우 if의 중괄호 내용을 실행하고, 거짓인 경우 else의 중괄호 내용을 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("정수 입력 : ");
        int num = keyboard.nextInt();
        
        if(num > 0) {
            System.out.println(num + "은 자연수");
        } else {
            System.out.println(num + "은 자연수가 아님");
        }
        
        System.out.println("프로그램 종료");
    }
}
cs

Line 8 : 정수를 입력받아 변수 num에 저장

Line 10 : num의 값이 0보다 큰 경우, Line 11 실행 후 Line 15로 이동

Line 12 : num의 값이 0보다 크지 않은 경우, Line 13 실행 후 Line 15로 이동

 

■ if-else if-else

- if의 조건식이 참인 경우 if의 중괄호 안의 내용을 실행하고, if의 조건식이 거짓이고 else if의 조건식이 참인 경우 else if의 중괄호 내용을 실행. 그 외에는 else의 중괄호 내용을 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        
        System.out.print("정수 입력 : ");
        int num = keyboard.nextInt();
        
        if(num > 0) {
            System.out.println("양의 정수");
        } else if(num == 0) {
            System.out.println("0");
        }else {
            System.out.println("음의 정수");
        }
        
        System.out.println("프로그램 종료");
    }
}
cs

Line 8 : 정수를 입력받아 변수 num에 저장

Line 10 : num의 값이 0보다 큰 경우, Line 11 실행 후 Line 18로 이동

Line 12 : num의 값이 0인 경우, Line 13 실행 후 Line 18로 이동

Line 14 : num의 값이 0보다 작은 경우, Line 15 실행 후  Line 18로 이동

 

※ "if-if-if" vs "if-else if-else"

- 아래의 [코드 1]처럼 if문 3개를 사용하는 경우, 첫 번째 if문을 만족하더라도 아래의 if문을 계속해서 비교한다. 하지만, [코드 2]처럼 if-else if-else문을 사용하는 경우 하나의 조건문을 만족하면 다음의 조건문을 비교하지 않고 건너뛰기 때문에, 속도면에서 조금 더 유리하다.

 

[코드 1]

1
2
3
4
5
6
7
8
9
if(num > 0) {
    System.out.println("양의 정수");
}
if(num == 0) {
    System.out.println("0");
}
if(num < 0) {
    System.out.println("음의 정수");
}
cs

 

[코드 2]

1
2
3
4
5
6
7
if(num > 0) {
    System.out.println("양의 정수");
else if(num == 0) {
    System.out.println("0");
}else {
    System.out.println("음의 정수");
}
cs

'Java' 카테고리의 다른 글

자바(Java) while문  (0) 2020.06.26
자바(Java) switch-case문  (0) 2020.06.25
자바(Java) 연산자 우선순위  (0) 2020.06.24
자바(Java) 비트 연산자  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23

+ Recent posts