본문 바로가기

JAVA

[JAVA] 조건문 if, Switch

반응형

 

조건문
말 그대로 코드 실행에 대해 조건을 추가하여
각 조건에 해당하는 각 코드 실행을 시키는 명령 기능을 가진 제어문이다.
조건문 if
" 만약(if) 조건식이 참(true)이면 괄호({}) 안의 문장들을 수행해라 "


if (조건식) {
             // 조건식이 참일 경우 수행될 코드 작성
}

괄호는{} 탭(Tab)을 통한 들여쓰기로
내부에 묶어둔 문장들을 조금 더 가독성 좋게 해주는 것이 좋다.

-> 단축키 ctrl + shift + F 

                (ctrl + A)+(ctrl + I)  

 

조건문 if 활용 문제 

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
package class04;
 
import java.util.Scanner;
 
public class Test71 {
    
    public static void main(String[] args) {
        
        // 문제 : 정수2개를 입력하여 약수인지 아닌지 확인하기 (교환알고리즘사용)  
        
        Scanner sc = new Scanner(System.in);
 
        System.out.print("정수1 : ");
        int num1 = sc.nextInt();
        System.out.print("정수2 : ");
        int num2 = sc.nextInt();
        
        //교환 알고리즘을 사용하여 num1값이 항상 작은수로 만들어주기 
        if (num1>num2) {
            int tmp = num1;
            num1=num2;
            num2=tmp;
        }// num1값이 항상 작은 경우
        if (num2%num1==0) { //약수의 의미는 큰수에서 작은수를 나눴을때 나머지가 0
            System.out.println(num1 + "는"+ num2 + "의 약수입니다" );
        }    
        
    }
}
cs

** 교환 알고리즘 

 if (num1>num2) {

            int tmp = num1;
            num1=num2;
            num2=tmp;
교환 알고리즘을 이해하기 위해 num1 = 10, num2 = 5 값을 가정하여
디버깅표를 그려보게되면 하기와 같이 나타난다.
중요한 알고리즘이기 때문에 꼭 기억해두자!

if문 활용 시간차 계산 문제 

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
package class01;
 
import java.util.Scanner;
 
public class Test01_1 {
    
    public static void main(String[] args) {
        
        //문제 : 시간과 분을 입력했을떄 1시간20분전 시간이 나오게하라.
        // 조건 : 시간은 1~12시
        //          분은 0~59분 
        //          잘못된 입력 -> 종료 
        
        
        //입력
        Scanner sc = new Scanner(System.in);
        System.out.print("시 : ");
        int hour = sc.nextInt();
        System.out.print("분 : ");
        int min = sc.nextInt();
        
        if (1>hour || 12 < hour || 0>min || 59<hour) { //유효성을 체크! 
            System.out.println("시간범위 : 1~12 ");
            System.out.println("분범위 : 0~59");
        }else {
            System.out.println(hour + "시" + min + "분의 1시간 20분전 시간은 ");
            hour--;
            min-=20;
        if (min<0) { 
            min+=60;
            hour--;
        }if (hour<1) {
            hour+=12;
        }
        System.out.println("1시간 20분전 시간은" + hour+"시"+min+"분 입니다.");
        }
 
    }
}
cs
 

 

  
 조건문 Switch
( if문과 달리 ) 
단 하나의 조건식으로 많은 경우의 수를 처리할 수 있고,표현도 간결해서 알아보기 쉽다.
▶ 처리할 경우의 수가 많을 때 적합!  단, 제약조건 주의해야 한다. 

switch (조건식) {
case 값1 :
                // 조건식의 결과가 [값1]과 같을 경우 수행
                break // switch문 벗어나기
case 값2 :
                // 조건식의 결과가 [값2]와 같은 경우 수행
                break ... ... default : //조건식 결과와 일치하는 case 없을 경우 수행될 문자
                //...
}

《계산 순서》

① 1차적으로 switch문의 조건식

②【결과와 일치하는 case문으로 이동】

③ 이동한 case문 내부 문장 수행

④【break문 / switch문 종류의 단계 도달】

⑤종료

위 순서 중 ②번 부분을 보면 switch문의 조건식 결과와 일치하는 case로 간다고 작성되어있는데
만약 일치하는 case가 없을 경우 default문으로 이동한다.

또 중요한 것 한가지는 switch문에서 break문은 각 case의 영역을 구분하는 역할
각 case문 끝에 break문 (break;)을 빼먹어서는 안된다.

 

《제약 조건》

  • 조건식의 결과값은 무조건 정수/문자열이어야 한다.
  • case문의 값 역시 상수 (정수/문자)/문자열만 사용하여야 한다. (변수나 실수 X)
  • 중복되지 않아야 한다.

 

반응형