6일차 - Java If else if 와 switch 문

딱지씨 ㅣ 2022. 12. 27. 12:39

 if ~ else if
 -if (조건식_a) {
  조건식_a가 참이면 실행
  }else if (조건식_b) {
  조건식_a가 거짓,조건식_b가 참이면 실행
  }.....{ 
 
  }else {
  상위에 모든 조건식이 거짓이면 실행 (안 사용해도 됨)
  }
 
  > 여러개의 조건식 중에서 하나만을 찾아서 실행하게 됩니다.

 

int var = 25;
		System.out.println("var " + var);
		System.out.println();
		
		System.out.println("- if 여러개 - ");
		if(var > 20) {
			System.out.println("20 보다 큰 수");
		}
		if(var > 10) {
			System.out.println("10 보다 큰 수");
		}
		if(var > 0) {
			System.out.println("0 보다 큰 수");
		}
		
		System.out.println();
		

		System.out.println("- if else if - ");
		if(var > 20) 
			System.out.println("20 보다 큰 수");
		else if(var > 10)
			System.out.println("10 보다 큰 수");
		else if(var > 0) 
			System.out.println("0 보다 큰 수");

<if와 if else if의 차이, 출력값>


 var 25


- if 여러개 - 해당 조건문을 다 출력시킨다
0 보다 큰 수
10 보다 큰 수
0 보다 큰 수

- if else if - 해당 조건문의 값만 출력시킨다
20 보다 큰 수

 

int data = 17;
		System.out.println("data : " + data);
		System.out.println();
		
		if(data >= 1 && data <= 10)
			System.out.println(" 1 ~ 10");
		if(data >= 11 && data <= 20)
			System.out.println("11 ~ 20");
		if(data >= 21 && data <= 30)
			System.out.println("21 ~ 30");
		System.out.println();
		
		
		// 위에 코드를 if else로 쓰는게 더 깔끔하다. 
		
		if(data <= 10)
			System.out.println(" 1 ~ 10");
		else if(data <= 20)
			System.out.println("11 ~ 20");
		else if(data <= 30)
			System.out.println("21 ~ 30");

 

int num = 30;
		System.out.println("num : " + num);
		System.out.println();
		
		if(num%3 == 0)
			System.out.println("3의 배수");
		else if(num%5 == 0)
			System.out.println("5의 배수");
		else if(num%3 == 0 && num%5 == 0)
			System.out.println("3 과 5의 배수");
		else
			System.out.println("?,?");
		
		System.out.println();
		
		
//if else if 사용시 순서를 잘 배치해야 원하는 값이 나온다.

 

 


 

 

switch 문
 - switch(값) {
    case 상수값 : 
         실행 코드
         break; <- switch 종료

     ....
    case 상수값 : 
          실행 코드
          break; 
  default : 
          실행코드

 


 > switch 문안의 값과 정확하게 일치하는 case 값을 찾아서 해당 지역의 코드를 실행한다
  -switch : 정수,문자,문자열만 가능 (실수는 안됨)
    case   : 상수만 사용 가능 (변수x)
                하나의 case 가 끝나는 마지막에는 'break' 문을 사용해서 종료한다
  default : 매칭되는 case 값이 없을 때 실행 할 코드가 있으면 사용한다 (사용 o,x)

 

int no = 2;
		System.out.println("no : " + no);
		System.out.println();
		
		switch(no) {
		//case n:Error (상수만 가능하기 때문에)
		case 1:
			System.out.println("1 - one");
			break;
		case 2:
			System.out.println("2 - two");
		case 3:
			System.out.println("3 - three");
			break;
		default:
			System.out.println("?,?");
			
		//break를 사용하지않으면 case가 멈추지않고 뒤에 case까지 출력된다.

 

 

 

Scanner scanner = new Scanner(System.in);
		
		System.out.println("Java : j , Python : p > ");
		char subject = scanner.next().charAt(0);
		
		System.out.println();
		
		switch(subject) {
		case 'J' :
			System.out.println("Java를 선택 하셨습니다.");
			break;
		case 'j' :
			System.out.println("Java를 선택 하셨습니다.");
			break;
		case 'P' :
			System.out.println("Python를 선택 하셨습니다.");
			break;
		case 'p' :
			System.out.println("Python를 선택 하셨습니다.");
			break;
		default:
			System.out.println("없는 과목입니다.");
		}
		
		//실행되고 출력되는 내용이 같으면 아래 코드 처럼 break 문을 생략하고 하나로 묶어도 된다.
		switch(subject) {
		case 'J' :
		case 'j' :
			System.out.println("Java를 선택 하셨습니다.");
			break;
		case 'P' :
		case 'p' :
			System.out.println("Python를 선택 하셨습니다.");
			break;
		default:
			System.out.println("없는 과목입니다.");
		}

 

String member = "gold";
		int dc = 0;
		
		switch(member) {
		case "vip":
			dc = 20;
			break;
		case "gold":
			dc = 10;
			break;
		case "silver":
			dc = 5;
			break;
	}
		System.out.println("회원등급 : " + member);
		System.out.println("할인       : " + dc);
		
		//.equals로 사용하는 방법도 있지만 case 코드가 더 깔끔함.
		
		
		if(member.equals("vip"))
			dc = 20;
		else if(member.equals("gold"))
			dc = 10;
		else if(member.equals("silver"))
			dc = 5;
		System.out.println("회원등급 : " + member);
		System.out.println("할인       : " + dc);