TIL/Java

[Java] if조건식, Switch

yndev 2021. 12. 23. 23:57

if문

if(조건식){
         조건식이 true일 때 실행할 명령문;
}

=> 조건을 만족하는 경우에만 추가적인 명령을 싫애시키고자 할 때 주로 사용한다.

 

-정수 한 개를 입력 받아 그 수가 짝수이면 "입력하신 숫자는 짝수입니다." 라고 출력하고,
짝수가 아니면 출력하지 않는 구문을 작성해보자

	public void testSimpleIfStatement() {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("숫자 한 개를 입력하세요 : ");
		int num = sc.nextInt();
		
		// 짝수인지 물어보는 조건을 기술함

			System.out.println("입력하신 숫자는 짝수입니다.");
		}
		
		// 조건문과 상관 없이 실행하는 구문
		System.out.println("프로그램을 종료합니다.");
		
	}

if중첩문

if문 안에서 또 다른 조건을 사용하여 if문을 사용할 수 있다. 
정수 한 개를 입력 받아 그 수가 양수인 경우에만 짝수인지를 확인하여
짝수이면 "입력하신 숫자는 양수이면서 짝수입니다."라고 출력하고
둘 중 하나라도 해당하지 않으면 아무 내용도 출력하지 않는 구문을 작성해보자

		public void testNestedIfStatement() {

		Scanner sc = new Scanner(System.in);
		
		System.out.print("숫자를 한 개 입력하세요 : ");
		int num = sc.nextInt();
		
		// 양수인지 조건 확인
		if(num > 0) {
			
			//양수가 맞는 경우 다시 한 번 더 짝수인지 조건을 확인함
			if(num % 2 == 0) {
				System.out.println("입력하신 숫자는 양수이면서 짝수입니다.");
			}
		}
		
		System.out.println("프로그램을 종료합니다.");

if-else문

if(조건식) { 
         조건식이 true일 때 실행할 명령문;
} else {
         조건식이 false일 때 실행할 명령문;
}

=> 조건을 만족하는지 여부에 따라 둘 중 하나는 무조건 실행해야하는 경우 많이 사용된다.

 

-정수 한 개를 입력 받아 그 수가 홀수이면 "입력하신 숫자는 홀수입니다." 라고 출력하고, 홀수가 아니면 "입력하신 숫자는 짝수입니다." 라고 출력하는 프로그램을 작성해보자.

public void testSimpleIfElseStatement() {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수를 하나 입력하세요 : ");
		int num = sc.nextInt();
		
		// 홀수인지 조건 확인
		if(num % 2 != 0) {
			// 조건식이 참일 때 출력할 내용 
			System.out.println("입력하신 정수는 홀수입니다.");
		} else {
			// 조건식이 거짓일 때 출력할 내용
			System.out.println("입력하신 정수는 짝수입니다.");
		}
		
		// 조건문과 상관 없이 출력할 내용
		System.out.println("프로그램을 종료합니다.");
		
	}

if-else 중첩문

숫자를 하나 입력 받아 양수이면 "입력하신 숫자는 양수입니다." 라고 출력하고,

음ㅅ위면 "입력하신 숫자는 음수입니다." 출력

단, 0이면 "0입니다." 라고 출력하세요

		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수를 하나 입력하세요 : ");
		int num = sc.nextInt();
		
		// 0인지 아닌지 조건 확인
		if(num != 0) {
			
			// 0이 아닌 경우 양수인지 음수인지 조건 확인
			if(num > 0) {
				System.out.println("입력하신 숫자는 양수입니다.");
			} else {
				System.out.println("입력하신 숫자는 음수입니다.");
			}
			
		} else {
			// 0인 경우 출력할 내용
			System.out.println("입력하신 숫자는 0입니다.");
		}
		
		System.out.println("프로그램을 종료합니다.");

if-else-if문 표현식

if(조건식1) {
          조건식1이 true일 때 실행할 명령문;
} else if(조건식2 {
          조건식1이 false이고 조건식2가 true일 때 실행할 명령문;
} else {
          위의 조건 2개가 모두 거짓인 경우 실행할 명령문;
}

=> 여러개의 조건을 제시하며 그 중 한 가지를 반드시 실행시키고 싶은 경우 사용한다.

 

-대답이 금도끼, 은도끼, 쇠도끼일 때마다 다르게 출력한다.

	public void testSimpleIfElseIfStatement() {
		System.out.println("산 속에서 나무를 하던 나무꾼이 연못에 도끼를 빠트리고 말았다.");
		System.out.println("연못에서 산신령이 금도끼, 은도끼, 쇠도끼를 들고 나타났다.");
		System.out.println("나무꾼에세 셋 중 어떤 도끼가 나무꾼의 도끼인지 물어보았다.");
		
		System.out.print("어느 도끼가 너의 도끼이냐? (1.금도끼, 2.은도끼, 3.쇠도끼) : ");
		
		Scanner sc = new Scanner(System.in);
		int answer = sc.nextInt();
		
		// 대답한 내용이 금도끼인지 확인
		if(answer == 1) {
			System.out.println("이런 거짓말쟁이!! 너에게는 아무 도끼도 줄 수 없구나!! 이 욕심쟁이야!!");
		
		// 대답한 내용이 은도끼인지 확인
		} else if(answer == 2) {	
			System.out.println("욕심이 과하지는 않지만 그래도 넌 거짓말을 하고 있구나!! 어서 썩 꺼지거라!!");
		
		// 금도끼, 은도끼가 아닌 경우 (즉, 쇠도끼인 경우)
		} else {
			System.out.println("오호~ 정직하구나~ 여기 있는 금도끼, 은도끼, 쇠도끼를 다 가져가거라!!!");
		}
		
		System.out.println("그렇게 산신령은 다시 연못 속으로 사라지고 말았다...");
		
	}

 

Switch

switch(비교할변수) {
       case 비교값1 : 비교값1과 일치하는 경우 실행할 구문; break;
       case 비교값2 : 비교값2와 일치하는 경우 실행할 구문; break;
       default : case에 모두 해당하지 않는 경우 실행할 구문; break;

여러 개의 비교값 중 일치하는 조건에 해당하는 로직을 실행하는 것은 if-else-if와 유사하다.
따라서 일부 호환이 가능하다.
하지만, switch문으로 비교 가능한 값은 정수, 문자, 문자열 형태의 값이다.
실수와 논리는 비교할 수 없다.
또한 정확하게 일치하는 경우만 비교할 수 있으며 대소비교를 할 수 없다는게 차이점이다.
case 절에는 변수를 사용하지 못한다. (값만 비교 가능)

 

-정수 두 개와 연산 기호 문자를 입력 받아서 두 숫자의 연산 결과를 출력해보는 계산기를 만들자.

		Scanner sc = new Scanner(System.in);
		System.out.print("첫 번째 정수 입력 : ");
		int first = sc.nextInt();
		System.out.print("두 번째 정수 입력 : ");
		int second = sc.nextInt();
		System.out.print("연산 기호 입력(+, -, *, /, %) : ");
		char op = sc.next().charAt(0);
		
		/* 연산의 결과를 저장할 변수 */
		int result = 0;
		
		switch(op) {
		case '+' :
			result = first + second;
			break;
		case '-' :
			result = first - second;
			break;
		case '*' :
			result = first * second;
			break;
		case '/' :
			result = first / second;			//second가 0이면 에러 발생(java.lang.ArithmeticException)
			break;
		case '%' :
			result = first % second;
			break;
			//default문은 생략 가능하지만 생략하는 경우 주석으로 생략 이유를 작성해주는 것이 좋다. */
			
		
		System.out.println(first + " " + op + " " + second + " = " + result);