본문 바로가기
Java 강의

자바 제어문 조건문 선택문 반복문 / if else if / switch case / for , while

by 자유코딩 2017. 9. 25.

제어문

 

프로그램의 흐름을 제어 할 수 있도록 도와주는 실행문

 

조건문 : 조건 만족여부에 따라 실행문을 제어 if~else if

선택문 : 변수에 일치하는 경우의 값에 따라 실행문 제어 Switch~case

반복문 : 특정 실행문을 여러번 반복 실행 할 수 있도록 제어 for , while

 

●조건문(if~else)

조건식의 값이 참인지 거짓인지에 따라 실행문의 제어가 결정된다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(수업이 있으면) {
    출석한다
}
boolean lecture = true;
if(lecture == true){
    System.out.println("출석");
}
//조건식이 참일때 실행문을 실행
 
if(수업이 있으면){
    출석
}
else(수업이 없으면) {
    집에서 쉰다
}
//조건을 만족할 때 실행할 문장과
//조건을 만족하지 않을때 실행할 문장을 지정
cs

 

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
package e1_condition;
 
import java.util.Scanner;
//일당 구하기
//시간당 6470원
//일하는 시간 입력
//8시간 이상 근무시에는 초과시간 1.5배 
public class p1_if_pay {
    
    public static void main(String[] args) {
        int salary = 6470;
        int workingTime;
        double extraSalary=0;
    
        
        Scanner input= new Scanner(System.in);
        System.out.print("working Time : ");
        workingTime = input.nextInt();
        
        if (workingTime>8) {
            salary = salary*8;
            extraSalary = 1.5*((workingTime-8)*6470);
            System.out.println("일당은 "+(salary+extraSalary));
            
        } else {
            salary = salary*workingTime;
            System.out.println("일당은 "+salary+"입니다.");
        }    
    }
}
cs

 

●조건문(if 문의 중첩)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package e1_condition;
public class p1_if_pay {
    
    public static void main(String[] args) {
    
        int a=-1;
        
        if(a>0) {
            if(a>10) {
                System.out.println("a는 10보다 크다");
            }
        }
        else {
            System.out.println("a는 0보다 작다");//이 부분이 실행 된다
        }        
    }
}
cs

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package e1_condition;
public class p1_if_pay {
    
    public static void main(String[] args) {
 
        int a=-1;
        if (a>0) {
            if(a>10) {
                System.out.println("a는 10보다 크다");
            }    
        else {
            System.out.println("a는 0보다 작다");//이 부분이 실행되지 않는다.
            }
        }
    }
}
cs

 

●조건문(if else if)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package e1_condition;
public class p1_if_pay {
    
    public static void main(String[] args) {
        //if else if 조건문
        int grade = 100;
        if (grade >= 90) {
            System.out.println("A");
        }
        else if(grade >= 80){
            System.out.println("B");
        }
        else if(grade >= 70){
            System.out.println("C");
        }
        else if(grade >= 60){
            System.out.println("D");
        }
        else {
            System.out.println("F");
        }    
    }
}
cs

 

세금 납부 예제

 

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
/*
 * 세금 계산 프로그램 작성
 * 과세표준 금액을 사용자에게 입력 받음 (단위 : 만원)
 * 과세기준
 * 1000만원 이하 : 9%
 * 1000만원 초과 : 18%
 * 4000만원 초과 : 27%
 * 8000만원 초과 : 36%
 * 출력 예시 : 소득세는 0000원 입니다.
 */
package e1_condition;
 
import java.util.Scanner;
 
public class p1_if_pay {
    
    public static void main(String[] args) {
        int salary;
        Scanner input = new Scanner(System.in);
        System.out.print("소득을 입력하세요 : ");
        salary = input.nextInt();
        
        if (salary<=1000) {
            System.out.println("소득세는 "+(salary*0.09));
        }
        else if(salary>1000&&salary<=4000){
            System.out.println("소득세는 "+(salary*0.18));
        }
        else if(salary>4000&&salary<=8000){
            System.out.println("소득세는 "+(salary*0.27));
        }
        else if(salary>8000){
            System.out.println("소득세는 "+(salary*0.36));
        }
    }
}
cs

 

●선택문(switch case)

 

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
package e1_condition;
 
import java.util.Scanner;
 
public class e1_condition {
    public static void main(String[] args) {
        int num;
        Scanner input = new Scanner(System.in);
        System.out.print("숫자 입력 : ");
        num = input.nextInt();
        switch (num/*변수*/) {
        //switch case 문은 break 가 없다면 1부터 5까지 모두 검사한다.
        //break를 써서 검사하고 실행 후 구문을 빠져 나가도록 한다.
        case 0://값 0
            System.out.println("영");
            break;
        case 1://값 0
            //값이 1일때 수행 될 문장
            System.out.println("하나");
            break;
        case 2://값 0
            System.out.println("둘");
            //값이 2일때 수행 될 문장
            break;
        case 3://값 0
            System.out.println("셋");
            //값이 3일때 수행 될 문장
            break;
        case 4://값 0
            System.out.println("넷");
            //값이 4일때 수행 될 문장
            break;
        case 5://값 0
            System.out.println("다섯");
            //값이 5일때 수행 될 문장
            break;
        default:
            System.out.println("많음");
            break;
        }
    }
}
cs

 

switch 문을 이용해서 해당 월의 일수를 출력하는 프로그램

 

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
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
    day=31;
    break;
case 4:
case 6:
case 9:
case 11:
    day=30;
    break;
case 2:
    if(((year%4==0)&&(year%100!=0)||(year%400==0))) {
        day=29;
    }
    else {
        day=28;
    }
    break;
default:
    System.out.println("잘못 입력함");
    break;
cs

 

switch case 문은 break 가 없다면 구문을 계속 탐색한다.

 

if else if 를 이용한 다른 풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class p3_switch_DayInMonth {
    public static void main(String[] args) {
        int month;
        int year = 2017;
        Scanner input = new Scanner(System.in);
        System.out.print("일 수를 알고 싶은 달을 입력하세요 : ");
        month = input.nextInt();
        
        if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12)) {
            System.out.println("2017년 "+month+"월의 일 수는 31일");
            
        }
        else if((month==4)||(month==6)||(month==9)||(month==11)) {
            System.out.println("2017년 "+month+"월의 일 수는 30");
            
        }
        else if(month==2||((year%4==0)&&(year%100!=0)||(year%400==0))){
            System.out.println("2017년 "+month+"월의 일 수는 28");
            
        }
    }
}
cs

 

●반복문(while)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package e1_condition;
 
public class e2_loop {
    public static void main(String[] args) {
        //while 문
        /*
         *땀 날때까지 뛰어
         *조건이 참인 동안 문장을 반복적으로 수행
         *조건은 참, 거짓이 판별될 수 있는 조건식이 와야함
         *반복이 끝날 수 있도록 조건식의 값이 바뀌도록 해야함
         *필요한 경우가 아니라면 무한루프에 빠지지 않도록 조심
            while(덥니?) {
                에어컨 틀어
            }    
         */
        int i=0;
        while(i<5) {
            System.out.println("숫자 : "+i);
        }
    }
}
cs

 

코드를 실행하면 계속해서 0을 출력합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
package e1_condition;
 
public class e2_loop {
    public static void main(String[] args) {
        
        int i=0;
        while(i<5) {
            System.out.println("숫자 : "+i);
            i++;
        }
    }
}
cs

 

무한히 반복되지 않으려면 이렇게 i++;을 추가해주면 됩니다.

 

구구단 예제

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package e1_condition;
 
import java.util.Scanner;
 
public class e2_loop {
    public static void main(String[] args) {
        int num;
        int i=1;
        Scanner input = new Scanner(System.in);
        System.out.print("출력하고 싶은 단을 입력하시오");
        num = input.nextInt();
        
        while(i<10) {
            System.out.println(num+"*"+i+"="+num*i);
            i++;    
        }
    }
}
cs

 

 

반복문 while 예제 / 사용자에게 정수 n을 입력 받고 n보다 작고 10으로 나누어 떨어지는 모든 양수

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package Div;
 
import java.util.Scanner;
 
public class Div {
    public static void main(String[] args) {
        int n;
        int i=1;
        Scanner input=new Scanner(System.in);
        System.out.print("숫자 입력 : ");
        n=input.nextInt();
        while(n>i) {
            if((i%10)==0) {
                System.out.println(i);
            }
            i++;    
        }        
    }
}
cs

 

사용자로부터 숫자 n을 입력받고 , n보다 작고 10으로 나눠떨어지는 모든 양수를 출력하는 코드입니다.

 

●반복문(do~while)

 

1
2
3
4
5
6
7
8
9
10
11
package e1_condition;
 
public class e2_loop {
    public static void main(String[] args) {
        int k=0;
        do {
            System.out.println("숫자 : "+k);
            k++;
        }while(k<3);
    }
}
cs

 

do while 문은 조건에 상관 없이 한번은 실행됨

 

1
2
3
4
5
6
7
8
9
10
11
package e1_condition;
 
public class e2_loop {
    public static void main(String[] args) {
        int k=4;
        do {
            System.out.println("숫자 : "+k);
            k++;
        }while(k<3);
    }
}
cs

 

k가 4여서 조건이 맞지 않음에도 한번 실행된다.

 

숫자 맞추기 예제

 

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
package e1_condition;
 
import java.util.Scanner;
 
public class p4_do_while_LetterGame {
    public static void main(String[] args) {
        int answer = 59;
        int num;
        int guess=1;
        Scanner input = new Scanner(System.in);
        System.out.print("숫자 입력 : ");
        num = input.nextInt();
        do {
            if(answer==num) {
                System.out.println("정답입니다.");
            }            
            else if(answer<num) {
                System.out.println("정답보다 높습니다.");
            }
            else if(answer>num) {
                System.out.println("정답보다 낮습니다.");
            }
            System.out.print("숫자 입력 : ");
            num = input.nextInt();
            guess++;
        } while (answer!=num);
        System.out.println("시도한 횟수"+guess);
 
    }
}
cs

 

Random을 사용해서 코드 바꾸기

 

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
package e1_condition;
 
import java.util.Random;
import java.util.Scanner;
 
public class p4_do_while_LetterGame {
 
    public static void main(String[] args) {
        
        int answer,num;
        Scanner input= new Scanner(System.in);
        Random rand = new Random();
        answer = rand.nextInt(10)+1;//1을 더하면 1부터 10까지 난수가 생성된다.
        //1을 더하지 않으면 0부터 9까지 난수가 생성된다.
        int guess=0;
        do {
            System.out.print("숫자 입력 : ");
            num = input.nextInt();
            if(answer==num) {
                System.out.println("정답입니다.");
            }            
            else if(answer<num) {
                System.out.println("정답보다 높습니다.");
            }
            else if(answer>num) {
                System.out.println("정답보다 낮습니다.");
            }
            guess++;
        } while (answer!=num);
        System.out.println("시도한 횟수"+guess);
    }
}
cs

 

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
package e1_condition;
 
import java.util.Scanner;
 
public class Bank {
    public static void main(String[] args) {
        int select = 0;
        int deposit=0;
        int input=0;
        Scanner money = new Scanner(System.in);
        
        while(select!=4) {
            System.out.println("---------------------------");
            System.out.println("1.예금 | 2.출금 | 3.잔고 | 4.종료");
            System.out.println("---------------------------");
            System.out.print("선택>");
            select = money.nextInt();
            switch (select) {
            case 1:
                System.out.print("예금 액 : ");
                input = money.nextInt();
                deposit = deposit+input;
                break;
            case 2:
                System.out.print("출금 액 : ");
                input=money.nextInt();    
                if(deposit < input) {
                    System.out.println("예금 액이 부족합니다.");                        
                }
                else {
                    deposit = deposit - input;
                }
                break;
            case 3:
                System.out.println("잔고 : "+deposit);
                break;
            default:
                break;
            }
        }    
    }
}
 
cs

 

 

●반복문(for)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
package e1_condition;
 
public class e2_loop {
    public static void main(String[] args) {
 
        for(int i=0;i<10;i++) {//반복문 for
         
           System.out.println("숫자 : "+i);
 
        }
    }
}
 
cs

 

반복문의 형식은 다음과 같습니다.

 

 

1부터 10까지 더한 값을 출력하는 예제

 

1
2
3
4
5
6
7
8
9
10
11
package For;
 
public class For {
    public static void main(String[] args) {
        int sum=0;
        for (int i = 1; i < 11; i++) {
            sum = sum+i;//합을 저장할 변수 sum에 i를 1부터 10까지 더한다
        }        
        System.out.println(sum);
    }
}
cs

 

 

반복문 for 중첩

 

for문을 중첩 사용해서 구구단 출력하기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
package For;
 
public class For {
    public static void main(String[] args) {
        
        for (int i = 2; i < 10; i++) {
            System.out.println("***"+i+"단***");
            for (int j = 1; j < 10; j++) {
                System.out.println(i+" *" +j+" = "+i*j);
            }
        }        
    }
}
cs

 

이렇게 반복문을 사용하시면 i가 2일때 j의 값을 1부터 9까지 바꿔가며 반복합니다.

 

그래서 이런 console화면이 출력됩니다.

 

 

설명이 부족하시진 않으셨나요? 질문하고 싶으신 것들은 jswoo030@gmail.com 으로 메일을 보내주시면 빠른 답변받으실 수 있습니다.

댓글