조건
- 로또 1장에 1000원
- 지불한 금액만큼 로또번호를 생성하고 거스름돈을 반환
- 메뉴에서 종료를 선택할 때 프로그램이 종료
필드
- isCountinue : while문이 계속 실행되도록 true를 저장
- money : 입력받은 금액
- change : 거스름돈
메소드
- buyLotto() : 로또 구매 메소드
- getLotto() : 로또번호 생성 메소드
- menuNum() : 메뉴선택, 예외처리
- main() : 메소드 실행
public class Lotto {
Scanner scanner = new Scanner(System.in);
boolean isCountinue = true; // while문을 실행할 boolean값
int money; // 입력할 금액
int change;// 거스름돈
public void menu() {
while (isCountinue) {
System.out.println("================");
System.out.println("Lotto 프로그램");
System.out.println("----------------");
System.out.println("1. Lotto 구입");
System.out.println("2. 프로그램 종료");
System.out.println("================");
switch (menuNum()) {
case 1: // 로또 구매 프로그램 실행
try {
buyLotto();
} catch (Exception e) {
System.out.println("Error : 잘못된 값이 입력되었습니다.");
System.out.println("Error : 프로그램을 재시작합니다.");
scanner.next();
}
break;
case 2:
System.out.println("감사합니다.");
isCountinue = false; // while에 false를 반환
break;
default:
System.out.println("잘못입력하셨습니다.");
}
}
}
- 금액을 입력받으면 money에 저장하고 거스름돈은 change에 저장
- 로또번호 생성횟수는 (지불금액/1000)만큼 실행
- 로또번호는 getLottoNum()을 호출
// 로또 구입
public void buyLotto() throws Exception{
money = 0;
System.out.println("<<<<<<<<Lotto 구입 시작>>>>>>>>");
System.out.println("[1000원에 로또번호 하나입니다.]");
System.out.print("금액을 입력하세요 : ");
money = scanner.nextInt();// 금액 입력
change = money % 1000;// 거스름돈
System.out.println();
// 로또번호 출력
if (money >= 1000) {
System.out.println("행운의 로또번호는 아래와 같습니다.");
for (int i = 0; i < (money / 1000); i++) {
System.out.print("로또번호" + (i + 1) + ": ");
getLottoNum();
System.out.println();
}
System.out.println();
} else { // 금액이 부족한 경우
System.out.println("금액이 부족합니다.");
}
// 거스름돈 출력
System.out.println("받은금액은 " + money + "원이고 " + "거스름돈은 " + change + "원 입니다.");
}
- 중복제거와 자동정렬을 위해 TreeSet 사용
- 로또번호가 총 6개가 생성되도록 함
-출력형식이 번호, 번호, 번호, 번호, 번호, 번호 가 되도록 함
// 로또 배열 생성
public void getLottoNum() {
TreeSet<Integer> tsLotto = new TreeSet<>();
Random rndNum = new Random();
// TreeSet에 로또번호 담기
while (tsLotto.size() < 6) {
tsLotto.add(rndNum.nextInt(45) + 1);
}
// '숫자, 숫자, 숫자' 로 출력하기 위한 for문
int cnt = 0;
for (int num : tsLotto) {
if (cnt == 0) {
System.out.print(num);
} else {
System.out.print(", " + num);
}
cnt++;
}
}
- 메뉴번호를 입력받고 지정된 숫자면 반환하고 잘못된값이면 오류처리
public int menuNum() {
while (true) {
try { // 스캐너로 입력받은 번호를 반환
System.out.print("메뉴 선택: ");
int num = scanner.nextInt();
return num;
} catch (Exception e) { // 오류발생시 재실행
System.out.println("Error : 잘못된 값이 입력되었습니다.");
scanner.next();
}
}
}
- 프로그램 실행
public static void main(String[] args) {
Lotto lottoProgram = new Lotto();
lottoProgram.menu();
}