Last active
July 8, 2023 09:46
-
-
Save YongWanJin/adda0b2fee31bda991a888b0788401cf to your computer and use it in GitHub Desktop.
제로베이스 백엔드 1주차 미니과제 3번
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
진용완 | |
제로베이스 백엔드 스쿨 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