반응형
1. 놀이동산 입장권 계산 프로그램 구현
1) 조건
- Scanner의 입력함수와 다중 조건문 사용
- 입장료 할인은 중복 적용되지 않으며, 중복 시 가장 할인을 많이 받은 금액으로 정해짐
- 나이-입장시간-국가유공자 여부-복지카드 여부 순으로 입력받기
- 기본 입장료 10000원, 3세 미만이면 무료 입장, 국가유공자거나 복지카드가 있따면 일반 할인(8000원), 13세 미만이거나 17시 이후에 입장하면 특별 할인(4000원)
- 출력 화면은 다음과 같이 구현(이미지 참고)
2) 코드
import java.util.Scanner;
// 자바 기초 미니과제 3: 놀이동산 입장권 계산 프로그램
public class MiniTask3 {
// 입장료 계산 메서드
private static String admissionFeeCal(int age, int time, String nationalMerit, String welfareCard) {
// 기본 입장료
String admissionFee = "10000";
if (age < 3) {
// 3세미만일 경우: 무료 입장
admissionFee = "무료 입장";
} else if (age < 13) {
// 13세 미만일 경우: 특별 할인
admissionFee = "4000";
} else {
// 그 외
if (time >= 17) {
// 17시 이후에 입장할 경우: 특별 할인
admissionFee = "4000";
} else if (time < 17){
// 17시 이전에 입장할 경우:
if (nationalMerit.equals("y") || welfareCard.equals("y")) {
// 국가유공자가 맞거나 복지카드가 있을 경우 일반 할인
admissionFee = "8000";
}
}
}
return admissionFee;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("[입장권 계산]");
System.out.print("나이를 입력해 주세요.(숫자): ");
int age = sc.nextInt();
System.out.print("입장시간을 입력해 주세요.(숫자입력): ");
int time = sc.nextInt();
System.out.print("국가유공자 여부를 입력해 주세요.(y/n): ");
String nationalMerit = sc.next();
System.out.print("복지카드 여부를 입력해 주세요.(y/n): ");
String welfareCard = sc.next();
// 입장료 계산 메서드 호출
String admissionFee = admissionFeeCal(age, time, nationalMerit, welfareCard);
System.out.println("입장료: " + admissionFee);
}
}
3) 출력 결과
2. 주민등록번호 생성 프로그램 구현
1) 조건
- Scanner의 입력함수, 조건문, Random 클래스 사용
- 2020년부터 변경된 주민번호 생성 조건 적용: 생년, 월, 일, 성별, 임의의 번호로 생성(임의 번호 범위는 1~999999사이의 값으로 설정, 생년은 2020년도 이후로 입력한다고 가정)
- 임의 번호는 Random 함수의 nextInt() 함수를 통해 생성
- 출력 화면은 다음과 같이 구현(이미지 참고)
2) 코드
import java.util.Random;
import java.util.Scanner;
// 자바 기초 미니과제 4: 주민등록번호 생성 프로그램
public class MiniTask4 {
// 주민등록번호 계산 메서드
public static String residentRegNumCal (String yearOfBirth, String monthOfBirth, String dayOfBirth, String gender) {
// 주민번호 맨 앞 두자리
String yearTwoDigits = yearOfBirth.substring(yearOfBirth.length() - 2);
// 주민번호 성별 자리
if (gender.equals("m")) {
gender = "3";
} else if (gender.equals("f")) {
gender = "4";
}
// 주민번호 마지막 6자리 임의번호 생성
Random random = new Random();
int lowerBound = 1;
int upperBound = 999999;
int randomNumber = random.nextInt(upperBound - lowerBound + 1) + lowerBound; // 1에서 999999 사이의 무작위 정수 생성
String formattedNumber = String.format("%06d", randomNumber); // 6자리로 포맷팅
// 주민번호 전체
String residentRegNum = yearTwoDigits + monthOfBirth + dayOfBirth + "-" + gender + formattedNumber;
return residentRegNum;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("[주민등록번호 계산]");
System.out.print("출생년도를 입력해 주세요.(yyyy): ");
String yearOfBirth = sc.next();
System.out.print("출생월을 입력해 주세요.(mm): ");
String monthOfBirth = sc.next();
System.out.print("출생일을 입력해 주세요.(mm): ");
String dayOfBirth = sc.next();
System.out.print("성별을 입력해 주세요.(m/f): ");
String gender = sc.next();
// 주민등록번호 계산 메서드 호출
String residentRegNum = residentRegNumCal(yearOfBirth, monthOfBirth, dayOfBirth, gender);
System.out.println("\n" + residentRegNum);
}
}
3) 출력 결과
3. 회고
사실 회고는 구현 코드 당 하나씩 작성했었는데,
이번엔 두 코드 모두 메서드에 함수까지 이것저것 잘 활용해서 너무 쉽게 코드를 짜버려서 적을 말이 없다... 이게 맞나 싶을 정도다.
그저 지난 몇 년간 혼자 자바와 JSP로 웹 개발하기, AWS 서버 구축하기로 삽질했던 경험이 정말 큰 도움이 된 것 같다.
그 덕분에, 뭔가 오류나 이해가 안 되는 부분이 생겨도 30분 만에 구글링이나 chatGPT로 해결할 수 있게 된 것 같다... 이번 코드는 구글과 챗지피의 도움 정도만 받았고 거의 다 직접 짰기에 굉장히 뿌듯했다... ㅎㅎ
반응형
'자바(JAVA) > 미니 프로젝트 & 기초 공부' 카테고리의 다른 글
Java 기초 다시 공부하기 5주차 - Java, 변수와 자료형, 연산자, 조건문, 반복문, 다차원 배열 (0) | 2024.08.09 |
---|---|
Java 기초 다시 공부하기 4주차 - 달력 출력 프로그램, 가상 대선 당선 시뮬레이션 프로그램 (0) | 2024.06.30 |
Java 기초 다시 공부하기 2주차-콘솔 화면에 구구단 1~9단 출력하기, 결제 금액 캐시백 계산 프로그램 구현 (0) | 2024.06.12 |
Java 기초 다시 공부하기 1주차-수강관리 프로그램 메뉴 선택 구현, 대통령 취임사 알파벳 별 출현 빈도 구현 (0) | 2024.06.09 |
자바(JAVA) 미니 프로젝트-간단한 캘린더 프로그램 만들기 2 (5단계~7단계) (0) | 2022.03.30 |