[Java] Ch04_1. 조건문 - if, switch

토끼는 개발개발·2022년 1월 7일
0

Java

목록 보기
10/29
post-thumbnail

📌 Chapter04. 조건문과 반복문


✏️ 1. 조건문 - if, switch


1.1 if문

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

if (score > 60) {
	System.out.println("합격입니다. ");
}
  • "만일 조건식이 참이라면, 괄호{} 안의 문장들을 수행하라."
  • score = 80이라면 조건식이 참이므로 "합격입니다. " 출력.
  • java에서 조건식의 결과는 반드시 true 또는 false이다.
  • 블럭 내의 문장이 하나뿐인 경우 괄호{} 생략 가능

✨ 예제 1


public class FlowEx1 {

	public static void main(String[] args) {
		int x = 0;
		System.out.printf("x=%d 일 때, 참인 것은 %n", x);
		if(x==0) System.out.println("x==0");
		if(x!=0) System.out.println("x!=0");

	}

}

✨ 예제 2

import java.util.*;

public class FlowEx2 {

	public static void main(String[] args) {
		int input;

		System.out.print("숫자를 하나 입력하세요.>");
		
		Scanner scanner = new Scanner(System.in);
		String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
		input = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
		
		if(input==0) {
			System.out.println("입력하신 숫자는 0입니다.");
		}
		if(input!=0) {
			System.out.println("입력하신 숫자는 0이 아닙니다.");
			System.out.printf("입력하신 숫자는 %d입니다.", input); //if문에 포함되지 않음(두 번째 줄이므로)
		}

	}

}


1.2 if-else문

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

  • 조건식의 결과가 참이냐 거짓이냐에 따라 수행되는 결과가 달라진다.
  • if-else문 역시 블럭 내의 문장이 하나라면 괄호{}를 생략할 수 있다.

✨ 예제 3

import java.util.*;
public class FlowEx3 {

	public static void main(String[] args) {
		System.out.print("숫자를 하나 입력하세요. >");
		
		Scanner scanner = new Scanner(System.in);
		int input = scanner.nextInt(); //화면을 통해 입력받은 숫자를 input에 저장
		
		if(input==0) {
			System.out.println("입력하신 숫자는 0입니다.");
		} else { // input != 0인경우
			System.out.println("입력하신 숫자는 0이 아닙니다. ");
		}

	}

}


1.3 if-else if문

if (조건식1) {
         // 조건식1의 연산결과가 참(true)일 때 수행될 문장들을 적는다.
} else if (조건식2) {
        // 조건식2의 연산결과가 참(true)일 때 수행될 문장들을 적는다.
} else if (조건식3) {
        // 조건식3의 연산결과가 참(true)일 때 수행될 문장들을 적는다.
} else {
        // 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
}

  • 첫 번째 조건식부터 순서대로 평가해서 결과가 참인 조건식을 만나면, 해당 블럭{}만 수행하고 'of-else'문 전체를 벗어난다.
  • 여러 개의 else if를 사용할 수 있다.

✨ 예제 4

import java.util.*;
public class FlowEx4 {
	public static void main(String[] args) {
		int score = 0; // 점수 저장 변수
		char grade = ' '; // 학점 저장 변수. 공백 초기화.
		
		System.out.println("점수를 입력하세요. >");
		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 score에 저장
		
		if (score >= 90) {
			grade = 'A';
		} else if (score >= 80) {
			grade = 'B';
		} else if (score >= 70) {
			grade = 'C';
		} else {
			grade =	'D';
		}
		
		System.out.println("당신의 학점은" + grade + "입니다.");

	}

=> 점수가 90점 미만이고, 80점 이상인 사람에게 B학점을 주는 조건에서 '80 <= score && score <90' 로 적지 않고 'score >= 80'이라고 적는 이유는 첫 번째 조건에서 'score >= 90'이 거짓이기 때문이다.



1.4 중첩 if문

if (조건식1) {
        // 조건식1의 연산결과가 참일 때 수행될 문장들을 적는다.
        if (조건식 2) {
        // 조건식1과 조건식2가 모두 참일 때 수행될 문장들을 적는다.
        } else {
        // 조건식1이 참이고, 조건식2가 거짓일 때 수행될 문장들을 적는다.
        }
} else {
       // 조건식1이 거짓일 때 수행되는 문장들
}


✨ 예제 5

import java.util.*;
public class FlowEx5 {

	public static void main(String[] args) {
		int score = 0;
		char grade = ' ', opt = 0;
		
		System.out.println("점수를 입력해주세요. ");
		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt();
		
		System.out.printf("당신의 점수는 %d입니다.%n", score);
		
		if (score >= 90) {
			grade = 'A';
			if (score >= 98) {
				opt = '+';
			}
			else {
				opt = '-';
			}
		} else if (score >= 80) {
			grade = 'B';
			if (score >= 88) {
				opt = '+';
			} else {
				opt = '-';
			}
		} else {
			grade = 'C';
		}
		System.out.printf("당신의 학점은 %c%c입니다.", grade, opt);

	}

}


1.5 switch문

switch (조건식) {
      case 값1 :
            // 조건식의 결과가 값1과 같을 경우 수행될 문장들을 적는다.
            break;
      case 값2 :
            // 조건식의 결과가 값2와 같을 경우 수행될 문장들을 적는다.
            break;       // switch문을 벗어난다.
      default :
            // 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들을 적는다.
}

  • switch문은 여러 개의 경우의 수를 처리하는데 적합하다. 다만, 제약조건이 있다.
  • 조건식의 결과와 일치하는 case문으로 이동해 문장들을 수행한다.
  • 조건식의 결과와 일치하는 case문이 하나도 없는 경우에는 default문으로 이동한다.
  • break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.
  • switch문도 중첩이 가능하다.
  • case문은 한 줄에 하나씩 쓰던, 한 줄에 붙여서 쓰던 상관 없다.
case 3:
case 4:
case 3: case 4:

switch문의 제약조건

  1. swirch문의 조건식 결과는 정수 또는 문자열이어야 한다.
  2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.

✨ 예제 6

import java.util.*;
public class FlowEx6 {

	public static void main(String[] args) {
		System.out.println("당신의 주민번호를 입력하세요. (123456-1234567)");
		
		Scanner scanner = new Scanner(System.in);
		String regNo = scanner.nextLine();
		
		char gender = regNo.charAt(7); //입력받은 번호의 8번째 문자를 gender에 저장
		
		switch (gender) {
			case '1': case '3':
				System.out.println("당신은 남자입니다.");
				break;
			case '2': case '4':
				System.out.println("당신은 여자입니다.");
		}

	}

}


참고
자바의 정석(저자: 남궁성)


오늘의 한 줄

자바의 조건문의 원리는 파이썬과 비슷해서 이해가 쉬웠다. 자바 문법을 익히기 위해 예제를 많이 연습했다. 괄호쓰기가 아직 어렵다. 파이썬보다 더 까다롭지만 점점 자바가 재밌어진다!
내일은 반복문 중 for문을 들어가겠다.

profile
하이 이것은 나의 깨지고 부서지는 샏 스토리입니다

0개의 댓글