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 |