카테고리 없음

[Java 혼자 공부하는 자바] 조건문과 반복문 (If문, If ~ else if ~ else 문, Switch문)

나수비니 2023. 9. 23. 01:20
728x90

 

조건문, 반복문은 이론으로 공부하는 것 보다, 직접 코드를 쳐보면서 체화하는 게  효율적일 것 같아 코드를 직접 쳐보며 공부했다.

코테에서 봤던 문제들이 있어서, 역시 기본이 중요하구나.. 생각했다.


핵심 키워드

  • If문, If ~ else문, if ~else if ~else문, switch문

핵심 포인트

  • 자바 프로그램은 main() 메소드의 시작 중괄호 {에서 끝 중괄호} 까지 위에서부터 아래로 실행하는 흐름.
  • 종류에는 조건문과 반복문이 있다.

 

조건문

  • 조건식에 따라 다른 실행문을 실행하기 위해 사용

if문

  • 조건식 결과에 따라 블록 실행 여부가 결정
  • 조건식에 올 수 있는 요소
    • true/false 값을 산출하는 연산식
    • boolean 타입 변수
    • 중괄호 블록은 조건식이 ture가 될 때 실행
      • 실행할 문장 하나뿐일 경우 생략 가능

if-else문

  • if문을 else 블록과 함께 사용
  • 조건식의 결과에 따라 실행 블록 선택
    • if문 조건식 true이면 if문 블록 실행
    • if문 조건식 false이면 else 블록 실행

if-else if-else문

  • 조건식이 여러 개인 if문
  • 처음 if문의 조건식이 false일 경우 다른 조건식의 결과에 따라 실행 블록 선택
    • if 블록 끝에 else if문 추가
    • else if문 개수는 제한 없음
package sec01.exam03;

public class ifElseifElseExample {

	public static void main(String[] args) {
		int score = 90;
		
		if(score>=90) {
			System.out.println("점수가 100~90 입니다.");
			System.out.println("등급은 A 입니다.");
		} else if(score>=80){
			System.out.println("점수가 80~89 입니다.");
			System.out.println("등급은 B 입니다.");
		} else if(score>=70){
			System.out.println("점수가 70~79입니다.");
			System.out.println("등급은 C 입니다.");
		} else {
			System.out.println("점수가 70 미만 입니다.");
			System.out.println("등급은 D 입니다.");
		}
	} 
}

 

If문으로 주사위 출력하기

package sec01.exam04;

public class IfDiceExample {

	public static void main(String[] args) {
		int num = ((int)(Math.random()*6)+1);
		
		if (num ==1) {
			System.out.println("1번이 나왔습니다.");
		}else if (num == 2) {
			System.out.println("2번이 나왔습니다.");
		}else if (num == 3) {	
			System.out.println("3번이 나왔습니다.");
		}else if (num == 4)	{
			System.out.println("4번이 나왔습니다.");
		}else if (num == 5) {
			System.out.println("5번이 나왔습니다.");
		}else if (num == 6) {
			System.out.println("6번이 나왔습니다.");
		}
	}
}
  • random은 0.0에서 1.0 사이의 실수를 리턴

 

Switch문

  • 변수가 어떤 값을 갖는가에 따라 실행문 선택
  • 같은 기능의 if문보다 코드가 간결

 

Switch문으로 주사위 값 구하기

package sec01.exam05;

public class SwitchExample {

	public static void main(String[] args) {
		int num = (int)(Math.random()*6) + 1;
		
		switch(num) {
		case 1:
			System.out.println("1번이 나왔습니다.");
		case 2:
			System.out.println("2번이 나왔습니다.");
		case 3:
			System.out.println("3번이 나왔습니다.");
		case 4:
			System.out.println("4번이 나왔습니다.");
		case 5:
			System.out.println("5번이 나왔습니다.");
		default:
			System.out.println("6번이 나왔습니다.");
		}
	}
}

 

🟡 코드 뜯기

  • (int)(Math.random()*6) 0이상 6 미만의 난수를 생성한다.
    • 이후, ‘+1’을 더하여 1 이상 6 이하의 숫자가 생성된다.
    • 이 숫자는 주사위를 던져 나오는 값처럼 1부터 6까지의 숫자 중 하나가 된다.
  • switch(num) 'num' 변수에 저장된 값을 기반으로 ‘switch’ 문이 분기한다.
  • ‘case’
    • 예를 들어, 'case 1'은 ‘num’의 값이 1일 때 실행되는 코드 블록을 정의한다.
  • ‘default’
    • 어떤 ‘case’에도 해당하지 않을 때 실행되는 블록

 

현재 시간을 생성하고, Switch 문을 사용해 메시지 출력하기

package sec01.exam06;

public class SwtichNoBreakCaseExample {

	public static void main(String[] args) {

//		8 <= < 12(8+4)
//		매스.랜덤 0.0 ~ 1.0 실수 출력하고 *4하면 -> 0.0 ~ 4.0 실수 리턴.
//		4.0은 1.0이 포함이 안 되기 때문에 4.0은 포함이 안 된다. 왜?
//		Math.random() 함수는 0 이상 1미만의 난수를 생성한다.
//		결과적으로 0 이상 3 이하의 정가 생성된다.
//		Math.ramdom()*4가 0.0이상 4.0미만의 실수를 반환하고, 이를 (int)를 사용해 정수로 형변환하면
//		0,1,2,3,중 하나의 값이 된다.
//		int로 바꾸게되면  0,1,2,3
	
		int time = (int)(Math.random()*4) + 8;
		System.out.println("[현재시간: " + time + " 시");
		
		switch(time) {
			case 8:
				System.out.println("출근합니다.");
			case 9:
				System.out.println("회의를 합니다.");
			case 10:
				System.out.println("업무를 봅니다.");
			default:
				System.out.println("외근을 나갑니다.");
		}
	}
}

🟡 코드 뜯기

 

int time = (int)(Math.random()*4) + 8;
		System.out.println("[현재시간: " + time + " 시");

 

  • 🏳️ 짚기
    • Math.random : 0.0 ~ 1.0 사이의 실수를 출력 → *4 → 0.0 ~ 4.0 실수를 리턴하고, 이를 int를 이용해 정수로 형변환 ⇒ 0, 1, 2, 3이 된다.
    • ‘case’문 끝에 break;가 없기 때문에 결과값이 true 가 되더라도, 계속 출력

 

package sec01.exam07;

public class SwitchCharExample {
	public static void main(String[] args) {
		char grade = 'B';
		
		switch(grade) {
			case 'A':
			case 'a':
				System.out.println("우수 회원입니다.");
				break;
			case 'B':
			case 'b':
				System.out.println("일반 회원입니다.");
				break;
			default:
				System.out.println("손님입니다.");			
		}	
	}
}
//"일반 회원입니다."

🟡 코드 뜯기

  1. char grade = 'B';
    1. char 타입 grade에 ‘B’ 라는 문자를 저장
  2. case 문에서 단 ‘A’, ‘a’ 단 하나라도 해당되면 출력

 

String 사용해 Switch문 구성 - 문자열 값에 따라 다른 동작 수행

package sec01.exam08;

public class SwitchStringExample {
	public static void main(String[] args) {
		String position ="과장";
		
		//switch에 포지션 변수가오다.
		switch(position) {
			case "부장":
				System.out.println("700만원");
				break;
			case "과장":
				System.out.println("500만원");
				break;
			default:
				System.out.println("300만원");
		}
	}
}

🟡 코드 뜯기

  1. 'String position = "과장";
    1. String 변수 ‘position’ 변수 선언, 초기값 = “과장” 할당