본문 바로가기

Language/Java 기본

조건문 사용 (Switch)

public class ex04 {
	public static void main(String[] args) {

		int num = 3;

		switch (num) {
		case 3: // num 이 3일 경우, 해당 문장 실행, case문은 범위 지정 불가, 따라서 연산자 같은 단일 값을 받는데에 유리.(else if 문을 계속 쓸 필요가 없기 때문에)
			System.out.println("num은 3이다.");
			break; // break; 는 케이스의 구분 역할을 하며, 없을 경우 하위케이스가 실행됨.
			
		case 1:
			System.out.println("num은 1이다.");
			
		default:
			break;
		}
	}
}

 

다중 if 문과 switch 문의 차이점으로는 

다중 if문은 범위를 설정 가능하고 switch 는 그럴 필요가 없다는 것인데

 

다중 if 문으로 여러개의 단일 값을 상정하려면 else if를 그 개수만큼 늘려야 하나

switch 문은 하나의 switch문 안에 들어가는 케이스로 계산할 수 있기 때문에 그 수가 적을 경우 Switch문이 유리하다.

 

 

 

import java.util.Scanner;

public class ex05 {
public static void main(String[] args) {
	
	Scanner sc = new Scanner(System.in);
	System.out.println("금액을 입력하세여");
	int money = sc.nextInt();
	System.out.println("메뉴를 고르세요, 1. 콜라 (800), 2. 생수(500원), 3. 비타민워터(1500)원");
	int menu = sc.nextInt();
	int menu_2  = 0;
	switch (menu) {
	case 1:
		menu_2 = 1;
		System.out.println("콜라를 선택하셨슴니다");
		break;
	case 2:
		menu_2 = 2;
		System.out.println("생수를 선택하셨슴니다");
		break;
	case 3:
		menu_2 = 3;
		System.out.println("비타민워터를 선택하셨슴니다");
		break;
	default:
		System.out.println("없는 메뉴네여");
		break;
		
	}
	if (menu_2 == 1 && money >= 800) {
		System.out.println("콜라를 뽑았습니다.");
		money -= 800;
		//System.out.println("잔액: "+money+"원");
		
		}
	else if (menu_2 == 1 && money <= 799) {
		System.out.println("돈이 없네여 ㅠㅠ");
	}
	if (menu_2 == 2 && money >= 500) {
		System.out.println("생수를 뽑았습니다.");
		money -= 500;
		//System.out.println("잔액: "+money+"원");	
	}
	else if (menu_2 == 2 && money <= 499) {
		System.out.println("돈이 업네여 ㅠㅠ");
	}
	if (menu_2 == 3 && money >= 1500) {
		System.out.println("비타민 워터를 뽑았습니다.");
		money -= 1500;
		//System.out.println("잔액: "+money+"원");	
	}
	else if (menu_2 == 3 && money <= 1499) {
		System.out.println("돈이 업네여 ㅠㅠ");
	}
	
	System.out.println("잔액: "+money+"원");
	}
	 
	
}

돈을 넣고 자판기에서 콜라, 생수, 비타민 워터를 뽑고 

잔돈을 계산하며 잔돈을 1000, 500, 100원짜리로 맞추어 배분하는 문제.

 

import java.util.Scanner;

public class ex05 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.println("금액을 입력하세여");
		int money = sc.nextInt();
		System.out.println("메뉴를 고르세요, 1. 콜라 (800), 2. 생수(500원), 3. 비타민워터(1500)원");
		int menu = sc.nextInt();
		int menu_2 = 0;
		int savemoney = 0;
		switch (menu) {
		case 1:
			menu_2 = 1;
			System.out.println("콜라를 선택하셨슴니다");
			break;
		case 2:
			menu_2 = 2;
			System.out.println("생수를 선택하셨슴니다");
			break;
		case 3:
			menu_2 = 3;
			System.out.println("비타민워터를 선택하셨슴니다");
			break;
		default:
			System.out.println("없는 메뉴네여");
			break;

		}
		if (money < 0 ) {
			System.out.println("돈이 업네여 ㅠㅠ");
			money = 0;
		}
		
		
		if (menu_2 == 1 && money >= 1) {
			System.out.println("콜라를 뽑았습니다.");
			savemoney = money-800;
			money -= 800;
			

		} 
		else if (menu_2 == 2 && money >= 500) {
			System.out.println("생수를 뽑았습니다.");
			savemoney = money-500;
			money -= 500;
			

		} 
		else if (menu_2 == 3 && money >= 1) {
			System.out.println("비타민 워터를 뽑았습니다.");
			savemoney = money-1500;
			money -= 1500;
			
		} 
		
		money = savemoney;
		System.out.println("잔액: " + money + "원");
		int chwon = money / 1000; // 1000원 계수
		int goback = money % 1000 / 500; // 1000나눈수의 나머지는 500원단위로 끊어지고
		int back = money % 1000 % 500 / 100; // 거기서 500원으로 나눈수는 100원 단위로 끊어진다.

		// System.out.println("잔돈은 천원짜리"+chwon+" 장, 오백원짜리 "+goback+"개, 백원짜리 "+back+" 개
		// 입니다.");
		System.out.printf("잔돈은\n천원짜리 %d장\n오백원짜리 %d개\n백원짜리 %d개입니다.", chwon, goback, back);
	}

}

 

코드를 최적화 하여 불필요한 다수의 else if [ 잔액 부족] 을 통합시켰다.

 

'Language > Java 기본' 카테고리의 다른 글

랜덤 함수의 사용  (0) 2020.12.30
반복문(While)문 의 사용  (0) 2020.12.29
Scanner 메서드로 문자 입력 받기  (0) 2020.12.29
조건문 사용 (if, else, else if)  (0) 2020.12.28
자바 예제문제 [삼항연산자 응용]  (0) 2020.12.28