Skip to content

Instantly share code, notes, and snippets.

@YongWanJin
Last active July 8, 2023 09:46
Show Gist options
  • Save YongWanJin/adda0b2fee31bda991a888b0788401cf to your computer and use it in GitHub Desktop.
Save YongWanJin/adda0b2fee31bda991a888b0788401cf to your computer and use it in GitHub Desktop.
제로베이스 백엔드 1주차 미니과제 3번
/*
진용완
제로베이스 백엔드 스쿨 15기
*/
import java.util.InputMismatchException;
import java.util.Scanner;
class ExceptionNotAge extends RuntimeException{}
class ExceptionNotTime extends RuntimeException{}
class ExceptionNotYN extends RuntimeException{}
class FeeCalculation {
// [ 변수 ]
int fee = 10000;
int age = 0;
int time = 0;
String nation; // 국가유공자 여부
String welfare; // 복지카드 소유 여부
FeeCalculation(){}
// [ 메서드 ]
// # 정보 입력 받는 메서드
public void inputInfo (){
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("나이를 입력해 주세요.: ");
try {
age = sc.nextInt();
if (age<0) {throw new ExceptionNotAge();}
} catch (InputMismatchException | ExceptionNotAge e) {
sc = new Scanner(System.in);
continue;
}
break;
}
while (true) {
System.out.print("입장시간을 입력해 주세요.(숫자입력):");
try {
sc = new Scanner(System.in);
time = sc.nextInt();
if (time<0 | time>24) {throw new ExceptionNotTime();}
} catch (InputMismatchException | ExceptionNotTime e) {
continue;
}
break;
}
while (true) {
try {
sc = new Scanner(System.in);
System.out.print("국가유공자 여부를 입력해 주세요.(y/n):");
nation = sc.nextLine();
if (!nation.equals("y") & !nation.equals("n")) {throw new ExceptionNotYN();}
} catch (ExceptionNotYN e) {
continue;
}
break;
}
while (true) {
System.out.print("복지카드 여부를 입력해 주세요.(y/n):");
try {
sc = new Scanner(System.in);
welfare = sc.nextLine();
if (!welfare.equals("y") & !welfare.equals("n")) {throw new ExceptionNotYN();}
} catch (ExceptionNotYN e) {
continue;
}
break;
}
}
// # 입장료 계산하는 메서드
public void feeCal () {
// 나이 기준 할인
if (age<3){
fee = 0;
} else if (age<13){
fee = 4000;
}
// 입장시간 기준 할인 & 중복할인 방지
if (time>=17 & age>=3){
fee = 4000;
}
// 국가유공자 해당 및 복지카드 소지 기준 할인 & 중복할인 방지
if ((nation.equals("y") | welfare.equals("y")) & age>=13 & time<17){
fee = 8000;
}
// 입장료 출력
System.out.printf("입장료: %d", fee);
}
}
// 메인부
public class Mini3AmusPark {
public static void main(String[] args) {
System.out.println("[입장권 계산]");
FeeCalculation fc = new FeeCalculation();
fc.inputInfo();
fc.feeCal();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment