ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ch4 자바 조건문] if문의 다양한 예
    프로그래밍 언어/JAVA 2022. 6. 7. 22:28
    if문

    조건에 따라 문장을 건너뛰고, 때로는 같은 문장을 반복해서 수행해야 할 때가 있다. 이처럼 프로그램의 흐름(flow)을 바꾸는 역할을 하는 문장들을 '제어문(control statement)'이라고 한다. 제어문에는 조건문과 반복문이 있는데, 조건문은 조건에 따라 다른 문장이 수행되도록 하고, 반복문은 특정 문장들을 반복해서 수행한다. 

     

    if문은 가장 기본적인 조건문이며, 다음과 같이 '조건식'과 '괄호{}'로 이루어져 있다. 'if'의 뜻이 '만일 ~이라면..'이므로 '만일(if) 조건식이 참(true)이면 괄호 {} 안의 문장들을 수행하라' 라는 의미로 이해하면 된다.

     

    if (조건식) {
      // 조건식이 참(true)일 때 수행될 문장들을 적는다.
    }

    ex) 조건이 참이면 화면에 "합격입니다" 출력하기

    if ( score >=60) {

      System.out.println("합격입니다.");

    }

     

     

    조건식의 다양한 예

     

    블럭 {}

    괄호 {}를 이용해서 여러 문장을 하나의 단위로 묶을 수 있는데, 이것을 '블럭(block)'이라고 한다. '}'로 끝나는데 끝난 다음에 문장의 끝을 의미하는 ';'를 붙이지 않는다는 것에 주의하자. 블럭 내의 문장들은 탭(tab)으로 들여쓰기(indentation)를 해서 블럭 안에 속한 문장이라는 것을 알기 쉽게 해주는 것이 좋다.

     

    if ( score > 60)
    {//블럭 시작
          System.out.println("합격입니다.");
    }//블럭 끝

    만약 블럭안에 한 문장만 넣는다면 괄호를 생략할 수 있고 한 줄로 쓰는 것도 가능하다. 하지만 보통 괄호{}로 문장을 감싸주는 것이 이상적이다.

     

     

    if-else 문

    if문의 변형인 if-else문의 구조는 다음과 같다. if문에 'else 블럭'이 추가되는 것이다. 'else'의 뜻이 '그 밖의 다른'이므로 조건식의 결과가 참이 아닐 때, 즉 거짓말일 때 else 블럭의 문장을 수행하라는 뜻이다.

    if ( 조건식 ) {
    // 조건식이 참일 때 수행될 문장을 적는다.
    } else {
    // 조건식이 거짓일 때 수행될 문장을 적는다.
    }

    조건식의 결과에 따라 이 두 개의 블럭 {} 중 어느 한 블럭 {}의 내용이 수행되고 전체 if문을 벗어나게 된다. 

     

     

    ※ 예제 1번 ※

    package ch4;
    
    import java.util.Scanner;
    
    public class Ex4_3 {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		System.out.println("숫자를 하나 입력하세요>");
    		int input = sc.nextInt();//화면을 통해 입력받은 숫자를 input에 저장
    		if(input==0) {
    			System.out.println("0임");
    		}else{
    			System.out.println("0이 아님");
    		}
    
    	}
    
    }

    예제 1번 출력 값

     

     

    if-else if문

    if-else문은 두 가지 경우 중 하나가 수행되는 구조인데, 처리해야 할 경우의 수가 셋 이상인 경우에는 여러 개의 조건식을 쓸 수 잇는 if-else if 문을 사용하면 된다.

     

    if ( 조건식1 ) {
    // 조건식1이 참일 때 수행될 문장을 적는다.
    } else if ( 조건식 2) {
    // 조건식 2의 연산결과가 참일 때 수행될 문장들을 적는다.
    } ellse if ( 조건식 3) {
    } else {
    //마지막은 보통 else 블럭으로 끝나며, else 블럭은 생략 가능하다.
    // 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
    }

     

    첫 번째 조건식부터 순서대로 평가해서 결과가 참인 조건을 만나면, 해당 블럭 {}만 수행하고 'if-else if'문 전체를 벗어난다. 만일 결과가 참인 조건식이 하나도 없으면, 마지막에 있는 else 블럭의 문장들이 수행된다. 

    예를 들어 다음과 같은 'if-else if'문이 있을 때 , 변수 score의 값이 85라면, 다음과 같이 처리된다.

     

    ※ 예제 2-1 번 ※

    package ch4;
    
    import java.util.Scanner;
    
    public class Ex4_4 {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int score = 0;
    		do {
    		System.out.println("점수를 입력하세요>");
    		score = sc.nextInt();
    		
    		if(score>=90) {
    			System.out.println("학점 A입니다.");
    		}else if(score >=80) {
    			System.out.println("학점 B입니다.");
    		}else if(score >=70) {
    			System.out.println("학점 C입니다.");
    		}else if(score >=60) {
    			System.out.println("학점 D입니다.");
    		}else {
    			System.out.println("학점 F입니다.");
    		}
    		}while(score>0); //score가 음수가 아니라면 반복문 실행, 즉 while안에 조건식이 flase이면 반복문 탈출
    	}
    }

    ※ 예제 2-2 번 

    package ch4;
    
    import java.util.Scanner;
    
    public class Ex4_4 {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int score = 0;
    		char grade =' ';
    		
    		do {
    		System.out.println("점수를 입력하세요>");
    		score = sc.nextInt();
    		
    		if(score>=90) {
    			grade ='A';
    		}else if(score >=80) {
    			grade ='B';
    		}else if(score >=70) {
    			grade ='C';
    		}else if(score >=60) {
    			grade ='D';
    		}else {
    			grade ='F';
    		}
    		System.out.println("학점은" + grade + "입니다.");
    		
    		}while(score>0); //score가 음수가 아니라면 반복문 실행, 즉 while안에 조건식이 flase이면 반복문 탈출
    		
    		}
            }

    예제 2번 출력 값

    점수 확인하는 if-else if 문의 대표적인 예가 될 수 있겠다. 답안을 보고 나는 1번처럼 작성했는데, 코드에 있어 중복을 최소화하는것이 클린코드기 때문에 변수 grade를 만들어서 학점의 값만 if 조건식의 출력 값으로 넣는다면 더 깔끔하겠다.!! 

     

     

     

    중첩 if문

    ※ 예제 3 번 

    package ch4;
    
    import java.util.Scanner;
    
    public class Ex4_5 {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int score = 0;
    		do {
    		
    		char grade =' ';
    		char opt ='0';//do-while문 안에 opt를 선언해 반복문이 실행될 때마다 0으로 초기화한다.
    		
    		
    		System.out.println("점수를 입력하세요>");
    		score = sc.nextInt();
    		
    		if(score>=90) {
    			if(score>=98) {
    				opt = '+';
    			}else if(score<93) {
    				opt = '-';
    			}
    			grade ='A';
    		}else if(score >=80) {
    			if(score>=88) {
    				opt = '+';
    			}else if(score<83) {
    				opt = '-';
    			}
    			grade ='B';
    		}else if(score >=70) {
    			if(score>=78) {
    				opt = '+';
    			}else if(score<73) {
    				opt = '-';
    			}
    			grade ='C';
    		}else if(score >=60) {
    			if(score>=68) {
    				opt = '+';
    			}else if(score<63) {
    				opt = '-';
    			}
    			grade ='D';
    		}else {
    			grade ='F';
    		}
    		System.out.println("학점은" +opt+ grade + "입니다.");
    		
    		}while(score>0); //score가 음수가 아니라면 반복문 실행, 즉 while안에 조건식이 flase이면 반복문 탈출
    		
    
    	}
    
    }

    예제 3번 출려값

     

    반응형

    댓글

Designed by Tistory.