Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 생성자오버로드
- 환경설정
- oracle
- 메소드오버로딩
- 예외처리
- 어윈 사용법
- 정수형타입
- 인터페이스
- 객체 비교
- abstract
- 자바
- GRANT VIEW
- EnhancedFor
- exception
- 오라클
- cursor문
- 집합_SET
- 한국건설관리시스템
- 컬렉션 타입
- 추상메서드
- Java
- 예외미루기
- 사용자예외클래스생성
- 대덕인재개발원
- 다형성
- 컬렉션프레임워크
- 참조형변수
- 제네릭
- 자동차수리시스템
- NestedFor
Archives
- Today
- Total
거니의 velog
230825_컬렉션 프레임워크 4 본문
[BaseBallTest2.java]
package kr.or.ddit.basic;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
/*
* 문제 ) Set을 이용하여 숫자 야구 게임 프로그램을 작성하시오.
* ==> 컴퓨터의 숫자는 난수를 이용하여 구한다. (1 ~ 9 사이의 난수 3개)
* (스트라이크는 S, 볼은 B로 나타낸다.)
*
* 예시 )
* 컴퓨터의 난수 ==> 9 5 7
*
* 실행예시 )
* 숫자입력 >> 3 5 6
* 3 5 6 ==> 1S 0B
* 숫자입력 >> 7 8 9
* 7 8 9 ==> 0S 2B
* 숫자입력 >> 9 7 5
* 9 7 5 ==> 1S 2B
* 숫자입력 >> 9 5 7
* 9 5 7 ==> 3S 0B
*
* 축하합니다...
* 당신은 4번만에 정답을 맞췄습니다...
*/
public class BaseBallTest2 {
private ArrayList<Integer> numList; // 난수가 저장될 리스트
private ArrayList<Integer> userList; // 사용자가 입력한 값이 저장될 리스트
private int strike, ball; // 스트라이크 개수와 볼의 개수가 저장될 변수
private Scanner sc = new Scanner(System.in);
// 1 ~ 9 사이의 서로 다른 난수 3개를 만들어서 리스트에 저장하는 메서드(Set 이용)
public void createNum() {
Set<Integer> numSet = new HashSet<Integer>();
// 난수 3개 만들기
while(numSet.size() < 3) {
numSet.add((int)(Math.random() * 9 + 1));
}
// 만들어진 난수를 List에 저장한다.
numList = new ArrayList<Integer>(numSet);
// List의 데이터를 섞어준다.
Collections.shuffle(numList);
}
// 사용자로부터 3개의 정수를 입력받아 리스트에 저장하는 메서드
// (입력한 값들은 중복되지 않게 한다.)
public void inputNum() {
int n1, n2, n3; // 입력한 정수가 저장될 변수 선언
do {
// enter, space, tab키를 기준으로 버퍼가 걸리므로 구분자를 생성한다.
System.out.print("숫자입력 >> ");
n1 = sc.nextInt();
n2 = sc.nextInt();
n3 = sc.nextInt();
if(n1==n2 || n1==n3 || n2==n3) {
System.out.println("중복되는 숫자는 입력할 수 없습니다. 다시 입력하세요...");
}
}while(n1==n2 || n1==n3 || n2==n3);
// 입력한 데이터를 List에 저장한다.
userList = new ArrayList<Integer>();
userList.add(n1);
userList.add(n2);
userList.add(n3);
}
// 스트라이크와 볼을 판정하고 결과를 출력하는 메서드
public void ballCount() {
strike = 0;
ball = 0; // 스트라이크와 볼의 개수를 0으로 초기화한다.
for(int i=0; i<numList.size(); i++) {
for(int j=0; j<userList.size(); j++) {
if(numList.get(i) == userList.get(j)) { // 값이 같은지 비교
if(i == j) { // 위치가 같은지 비교
strike++;
}else {
ball++;
}
}
}
}
// 볼카운트 결과를 출력한다.
// 9 5 7 ==> 3S 0B
System.out.println(userList.get(0) + " " + userList.get(1) + " " + userList.get(2) + " ==> " + strike + "S " + ball + "B");
}
// 게임을 진행하는 메서드
public void startGame() {
// 난수를 만드는 메서드 호출
createNum();
// 만들어진 난수값 확인하기
System.out.println("컴퓨터의 난수 : " + numList); // 테스트 코드 이므로 주석 처리할 것.
int cnt = 0; // 몇 번만에 맞췄는지를 저장하는 변수
do {
cnt++;
// 사용자 입력 메서드 호출
inputNum();
// 볼카운트를 계산하는 메서드 호출
ballCount();
}while(strike != 3); // 3스트라이크가 될 때까지 반복한다.
System.out.println();
System.out.println("축하합니다...");
System.out.println("당신은 " + cnt + "번째 만에 맞췄습니다...");
}
public static void main(String[] args) {
new BaseBallTest2().startGame();
}
}
[EqualsHashCodeTest.java]
package kr.or.ddit.basic;
import java.util.HashSet;
import java.util.Objects;
public class EqualsHashCodeTest {
public static void main(String[] args) {
Person p1 = new Person();
p1.setNum(1);
p1.setName("홍길동");
Person p2 = new Person();
// p2.setNum(2);
// p2.setName("일지매");
p2.setNum(1);
p2.setName("홍길동");
Person p3 = p1;
System.out.println(p1 == p2); // false
System.out.println(p1 == p3); // true
System.out.println();
System.out.println(p1.equals(p2)); // false
System.out.println(p1.equals(p3)); // true
System.out.println();
// JVM의 메모리 구조, 크게 3 영역
// 1. Method Area : - 프로그램에서 사용되는 클래스의 정보가 저장됨.
// - static 자원을 저장.
// 2. Stack Area : - 메소드 호출 시 스택 영역을 활용.
// 3. Heap Area : - 객체가 생성되는 영역.
// .java => .class 파일로 변환됨. 클래스 로더가 이것을 읽어들임.
// 읽어들인 클래스 정보(EqualsHashCodeTest)를 Method Area에 저장.
// Method Area에 main(String[] args) 메서드 저장.
// 클래스 실행 시 컴퓨터가 main()를 검사. 만약 main()가 있으면 이것을 실행.
// Stack Area에 stack프레임이 잡힘(main()).
// main()의 지역 변수(String[] args)가 stack프레임 안에 잡힘.
// Person 객체 정보를 Method Area에서 찾음. 없으면 Person 클래스를 찾아다가 정보를 읽어서 Method Area에 저장.
// 참조형 변수 p1이 main()의 stack프레임 안에 잡힘.
// = new Person();은 Heap Area에 생성.
// Heap Area의 new Person() 객체 안에 num, name, getter, setter... 등이 만들어짐.
// Person() 기본 생성자 호출. 생성자가 없으면 컴파일러가 기본 생성자 생성. num = 0; name = null;로 초기화.
// 참조형 변수 p1에 new Person() 객체를 생성한 주소(100번지라고 가정)가 저장됨.
// p1. ==> p1 변수에 100번지 주소를 참조해서 Heap Area에 100번지 주소를 가리키는 Person() 객체를 찾아감.
// 그 객체 안에 setNum() 메서드를 호출한다.
// Stack Area에 새로운 setNum()용 stack 프레임이 잡힘.
// setNum() stack 프레임 안에 int num이 잡힘.
// setNum(1->인수라 부름); 인수 값 1이 stack 프레임 안에 int num에 들어감.
// stack 프레임 안에는 항상 this가 있고, p1이 가리키는 영역의 주소값이 들어가 있다.
// this는 어떤 객체를 호출 하면 모든 메서드 안에 다 있다.
// setNum(int num); 은 결국 자기 자신의 주소를 참조하여 int num의 1의 값을 담는다.
// setNum() 메서드가 종료되면 stack 프레임이 사라지고 제어가 다시 main() 프레임으로 돌아옴.
// p1.setName()도 마찬가지 역할을 수행.
// p2라는 변수를 main() stack 프레임에 생성.
// Person() 객체를 새로 heap 영역에 만든다.
// p2에 생성한 주소(200번지라고 가정)가 저장된다.
// 나머지 수행 순서는 같다.
// p3 변수에 p1을 넣는다? p1에는 100번지가 있음. 따라서 p3도 100번지를 가리키게 됨.
// p1(100번지) == p2(200번지) ? false
// p1(100번지) == p3(100번지) ? true
// equals() 메서드는 Object에서 구현됨.
// 기본적으로 참조값을 가지고 비교하기 때문에 결과가 같다.
// equals() 메서드를 재정의한 후...
System.out.println(p1.equals(p2)); // true
System.out.println(p1.equals(p3)); // true
System.out.println();
HashSet<Person> testSet = new HashSet<Person>();
testSet.add(p1);
testSet.add(p2);
System.out.println("testSet : " + testSet); // testSet : [Person [num=1, name=홍길동], Person [num=1, name=홍길동]]
System.out.println("set의 개수 : " + testSet.size()); // set의 개수 : 2
System.out.println("p1 : " + p1.hashCode()); // p1 : 366712642
System.out.println("p2 : " + p2.hashCode()); // p2 : 1829164700
System.out.println("p3 : " + p3.hashCode()); // p3 : 366712642
/*
* - equals() 메서드 ==> 두 객체의 내용이 같은지 비교하는 메서드 (동등성 비교)
* - hashCode() 메서드 ==> 두 객체가 같은 객체인지를 비교하는 메서드 (동일성 비교)
*/
// hashCode()를 재정의 한 이후...
System.out.println("testSet : " + testSet); // testSet : [Person [num=1, name=홍길동]]
System.out.println("set의 개수 : " + testSet.size()); // set의 개수 : 1
System.out.println("p1 : " + p1.hashCode()); // p1 : 54151054
System.out.println("p2 : " + p2.hashCode()); // p2 : 54151054
System.out.println("p3 : " + p3.hashCode()); // p3 : 54151054
}
}
// num 변수의 값과 name 변수의 값 두 가지 모두 같으면 true를 반환하도록 equals() 메서드를 재정의 해보자.
class Person {
private int num;
private String name;
public Person() {}
public Person(int num, String name) {
this.num = num;
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person [num=" + num + ", name=" + name + "]";
}
// 최신 기준
// @Override
// public boolean equals(Object obj) {
//
// // 참조값(주소값)이 같은지 검사
// if(this == obj) { // 참조값이 서로 같다면? 무조건 같은 것.
// return true;
// }
// if(obj == null) { // 비교할 객체가 null이라면? 무조건 다른 것.
// return false;
// }
//
// // 참조타입이 같은지 검사
// if(this.getClass() != obj.getClass()) { // 서로 다른 종류의 클래스이므로 같은 값이 될 수 없다.
// return false;
// }
//
// Person that = (Person)obj; // 매개변수의 값을 현재 객체 유형으로 형변환(다운캐스팅)한다.
//
// // 각 변수값들이 모두 같은지 검사.
// return this.num == that.num && Objects.equals(this.name, that.name);
//
// }
//
// @Override
// public int hashCode() {
// return Objects.hash(num, name);
// }
// 알트 + 시프트 + s : 자동 완성으로 만든 경우
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + num;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (num != other.num)
return false;
return true;
}
}
[MapTest.java]
package kr.or.ddit.basic;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
/*
* Map ==> Key값과 Value값을 한 쌍으로 관리하는 객체
* - Key값은 중복을 허용하지 않고 순서(index)가 없다. (Set의 특징을 갖는다.)
* - value값은 중복을 허용한다.
*/
HashMap<String, String> map = new HashMap<String, String>();
// 자료 추가 ==> put(key값, value값)
map.put("name", "홍길동");
map.put("addr", "대전");
map.put("tel", "010-1234-5678");
System.out.println("map에 저장된 데이터의 개수 : " + map.size()); // map에 저장된 데이터의 개수 : 3
System.out.println("map => " + map.toString()); // map => {name=홍길동, tel=010-1234-5678, addr=대전}
System.out.println();
// 자료 수정 ==> 데이터를 추가할 때 key값이 같으면 나중에 추가한 값으로 덮어쓴다.
map.put("addr", "서울");
System.out.println("map => " + map); // map => {name=홍길동, tel=010-1234-5678, addr=서울}
System.out.println();
// 자료 삭제 ==> remove(key값) : key값이 같은 자료를 찾아 삭제한다.
// 반환값 => 삭제된 자료의 value값.
// String removeTel = map.remove("tel");
// System.out.println("map => " + map); // map => {name=홍길동, addr=서울}
// System.out.println("삭제된 값 : " + removeTel); // 삭제된 값 : 010-1234-5678
// System.out.println();
// 자료 읽기 ==> get(key값) : key값과 같이 저장된 value값을 반환한다.
System.out.println("이름 : " + map.get("name")); // 이름 : 홍길동
System.out.println();
// key값의 존재 여부 알아내기 => containsKey(key값)
// => 해당 key값이 있으면 true, 없으면 false.
System.out.println("tel 키값의 존재 여부 : " + map.containsKey("tel")); // tel 키값의 존재 여부 : true
System.out.println("age 키값의 존재 여부 : " + map.containsKey("age")); // age 키값의 존재 여부 : false
System.out.println();
// Map에 저장된 모든 데이터를 차례대로 가져와 처리하기
// 1. keySet()메서드 이용하기
// keySet()메서드 ==> map의 모든 key값들을 읽어와 Set형으로 반환한다.
Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();
while(it.hasNext()) {
String key = it.next();
String value = map.get(key);
System.out.println(key + " : " + value);
}
System.out.println("----------------------------------");
// name : 홍길동
// tel : 010-1234-5678
// addr : 서울
// 2. keySet을 향상된 for문으로 처리하기
// for(String key : keySet) {
for(String key : map.keySet()) {
String value = map.get(key);
System.out.println(key + " => " + value);
}
System.out.println("----------------------------------");
// name : 홍길동
// tel : 010-1234-5678
// addr : 서울
// 3. value값만 읽어와 처리하기 ==> values()메서드 이용
for(String value : map.values()) {
System.out.println(value);
}
System.out.println("----------------------------------");
// 홍길동
// 010-1234-5678
// 서울
// 주로 1, 2번을 많이 사용. 특별한 경우 3번을 쓴다.
}
}
[PhoneBookTest.java]
package kr.or.ddit.basic;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
/*
* 문제) 이름, 주소, 전화번호를 멤버로 갖는 Phone 클래스를 만들고,
* Map을 이용하여 전화번호 정보를 관리하는 프로그램을 작성하시오.
*
* (Map의 구조는 Key값으로 입력한 '이름'을 사용하고, value값으로는 'Phone클래스의 인스턴스'로 한다.)
* 변수 선언 예시) HashMap<String, Phone> 변수명;
*
* 이 프로그램에는 다음과 같은 메뉴가 있는데 각 메뉴의 기능을 구현한다.
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
*
* - 검색, 삭제 기능은 '이름'을 입력 받아 처리한다.
*
* 실행 예시)
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
* 메뉴선택 >> 1
*
* 새롭게 등록할 전화번호 정보를 입력하세요.
* 이 름 >> 홍길동
* 전화번호 >> 010-1234-5678
* 주 소 >> 대전시 중구 오류동
*
* '홍길동' 전화번호 등록 완료!!!
*
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
* 메뉴선택 >> 1
*
* 새롭게 등록할 전화번호 정보를 입력하세요.
* 이 름 >> 홍길동
*
* '홍길동'은 이미 등록된 사람입니다...
*
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
* 메뉴선택 >> 5
*
* ----------------------------------------
* 번호 이름 전화번호 주소
* ----------------------------------------
* 1 홍길동 010-1234-5678 대전시 중구 오류동
* ~~~
* ~~~
* ----------------------------------------
* 출력 끝...
*
* -----------------
* 다음 메뉴를 선택하세요.
* 1. 전화번호 등록
* 2. 전화번호 수정
* 3. 전화번호 삭제
* 4. 전화번호 검색
* 5. 전화번호 전체 출력
* 0. 프로그램 종료
* -----------------
* 메뉴선택 >> 0
*
* 프로그램을 종료합니다.
*
*/
public class PhoneBookTest {
String name;
String tell;
String add;
Scanner sc = new Scanner(System.in);
HashMap<String, Phone> phoneBookmap = new HashMap<String, Phone>();
public void start() {
PhoneBookTest pbt = new PhoneBookTest();
while(true) {
System.out.println("-----------------");
System.out.println("다음 메뉴를 선택하세요.");
System.out.println("-----------------");
System.out.println("1. 전화번호 등록");
System.out.println("2. 전화번호 수정");
System.out.println("3. 전화번호 삭제");
System.out.println("4. 전화번호 검색");
System.out.println("5. 전화번호 전체 출력");
System.out.println("0. 프로그램 종료");
System.out.println("-----------------");
System.out.print("메뉴선택 >> ");
int input = Integer.parseInt(pbt.sc.nextLine());
switch(input) {
case 1:
// System.out.println("1번 선택");
pbt.add();
break;
case 2:
// System.out.println("2번 선택");
pbt.update();
break;
case 3:
// System.out.println("3번 선택");
pbt.delete();
break;
case 4:
// System.out.println("4번 선택");
pbt.search();
break;
case 5:
// System.out.println("5번 선택");
pbt.listAll();
break;
case 0:
System.out.println("프로그램을 종료합니다.");
System.exit(0);
default:
System.out.println("다시 입력해주세요...");
}
}
}
public void add() {
PhoneBookTest pbt = new PhoneBookTest();
System.out.println("새롭게 등록할 전화번호 정보를 입력하세요.");
System.out.print("이 름 >> ");
pbt.name = pbt.sc.nextLine();
if(phoneBookmap.get(pbt.name) != null) {
System.out.println("'"+ pbt.name + "'님은 이미 등록된 사람입니다.");
pbt.add();
}
System.out.print("전화번호 >> ");
pbt.tell = pbt.sc.nextLine();
System.out.print("주 소 >> ");
pbt.add = pbt.sc.nextLine();
phoneBookmap.put(pbt.name, new Phone(pbt.name, pbt.add, pbt.tell));
System.out.println("'" + phoneBookmap.get(pbt.name).getName() + "' 전화번호 등록 완료!!!");
System.out.println(phoneBookmap.get(pbt.name)); // 테스트 코드
}
public void update() {
PhoneBookTest pbt = new PhoneBookTest();
System.out.println("수정할 전화번호 정보를 입력하세요.");
System.out.print("이 름 >> ");
pbt.name = pbt.sc.nextLine();
System.out.print("전화번호 >> ");
pbt.tell = pbt.sc.nextLine();
System.out.print("주 소 >> ");
pbt.add = pbt.sc.nextLine();
phoneBookmap.put(pbt.name, new Phone(pbt.name, pbt.add, pbt.tell));
System.out.println("'" + phoneBookmap.get(pbt.name).getName() + "' 전화번호 수정 완료!!!");
System.out.println(phoneBookmap.get(pbt.name)); // 테스트 코드
}
public void delete() {
PhoneBookTest pbt = new PhoneBookTest();
System.out.println("삭제할 전화번호 정보를 입력하세요.");
System.out.print("이 름 >> ");
pbt.name = pbt.sc.nextLine();
if(phoneBookmap.get(pbt.name) == null) {
System.out.println("등록된 이름이 없습니다.");
pbt.delete();
}
phoneBookmap.remove(pbt.name);
System.out.println("'" + pbt.name + "' 전화번호 삭제 완료!!!");
}
public void search() {
PhoneBookTest pbt = new PhoneBookTest();
System.out.println("검색할 전화번호 정보를 입력하세요.");
System.out.print("이 름 >> ");
String name = pbt.sc.nextLine();
System.out.println("이름 : " + phoneBookmap.get(name).getName());
System.out.println("전화번호 : " + phoneBookmap.get(name).getTell());
System.out.println("주소 : " + phoneBookmap.get(name).getAdd());
}
public void listAll() {
System.out.println("----------------------------------------");
System.out.println("번호 이름 전화번호 주소");
System.out.println("----------------------------------------");
int cnt = 0;
for(String key : phoneBookmap.keySet()) {
cnt++;
Phone value = phoneBookmap.get(key);
System.out.println(cnt + " " + value.getName() + " " + value.getTell() + " " + value.getAdd());
}
System.out.println("----------------------------------------");
}
public static void main(String[] args) {
PhoneBookTest pbt = new PhoneBookTest();
pbt.start();
}
}
class Phone {
private String name;
private String add;
private String tell;
public Phone() {}
public Phone(String name, String add, String tell) {
super();
this.name = name;
this.add = add;
this.tell = tell;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAdd() {
return add;
}
public void setAdd(String add) {
this.add = add;
}
public String getTell() {
return tell;
}
public void setTell(String tell) {
this.tell = tell;
}
@Override
public String toString() {
return "Phone [name=" + name + ", add=" + add + ", tell=" + tell + "]";
}
}
[LottoTest.java]
package kr.or.ddit.basic;
import java.util.HashSet;
import java.util.Scanner;
/*로또를 구매하는 프로그램 작성하기
사용자는 로또를 구매할 때 구매할 금액을 입력하고
입력한 금액에 맞게 로또번호를 출력한다.
(단, 로또 한장의 금액은 1000원이며 최대 100장까지만 구입할 수 있고,
거스름돈도 계산하여 출력한다.)
==========================
Lotto 프로그램
--------------------------
1. Lotto 구입
2. 프로그램 종료
==========================
메뉴선택 : 1 <-- 입력
Lotto 구입 시작
(1000원에 로또번호 하나입니다.)
금액 입력 : 2500 <-- 입력
행운의 로또번호는 아래와 같습니다.
로또번호1 : 2,3,4,5,6,7
로또번호2 : 20,21,22,23,24,25
받은 금액은 2500원이고 거스름돈은 500원입니다.
==========================
Lotto 프로그램
--------------------------
1. Lotto 구입
2. 프로그램 종료
==========================
메뉴선택 : 1 <-- 입력
Lotto 구입 시작
(1000원에 로또번호 하나입니다.)
금액 입력 : 900 <-- 입력
입력 금액이 너무 적습니다. 로또번호 구입 실패!!!
==========================
Lotto 프로그램
--------------------------
1. Lotto 구입
2. 프로그램 종료
==========================
메뉴선택 : 1 <-- 입력
Lotto 구입 시작
(1000원에 로또번호 하나입니다.)
금액 입력 : 101000 <-- 입력
입력 금액이 너무 많습니다. 로또번호 구입 실패!!!
==========================
Lotto 프로그램
--------------------------
1. Lotto 구입
2. 프로그램 종료
==========================
메뉴선택 : 2 <-- 입력
감사합니다*/
public class LottoTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("==========================");
System.out.println(" Lotto 프로그램");
System.out.println("--------------------------");
System.out.println(" 1. Lotto 구입");
System.out.println(" 2. 프로그램 종료");
System.out.println("==========================");
System.out.print("메뉴선택 : ");
int choice = Integer.parseInt(sc.nextLine());
if(choice == 1) {
System.out.println();
System.out.println("Lotto 구입 시작");
System.out.println();
System.out.println("(1000원에 로또번호 하나입니다.)");
System.out.print("금액 입력 : ");
int money = Integer.parseInt(sc.nextLine());
if(money < 1000) {
System.out.println();
System.out.println("입력 금액이 너무 적습니다. 로또번호 구입 실패!!!");
System.out.println();
continue;
}else if(money > 100000) {
System.out.println();
System.out.println("입력 금액이 너무 많습니다. 로또번호 구입 실패!!!");
System.out.println();
continue;
}
System.out.println();
int count = money / 1000;
System.out.println("행운의 로또번호는 아래와 같습니다.");
for(int i=0; i<count; i++) {
HashSet<Integer> lottoSet = new HashSet<Integer>();
while(lottoSet.size() < 6) {
lottoSet.add((int)(Math.random() * 45 + 1));
}
System.out.println("로또번호" + (i+1) + " : " + lottoSet);
}
System.out.println();
System.out.println("받은 금액은 " + money + "원 이고, 거스름돈은 " + (money - (count * 1000)) + "원 입니다.");
System.out.println();
}else if(choice == 2) {
System.out.println("이용해 주셔서 감사합니다.");
System.exit(0);
}else {
System.out.println("다시 입력해 주세요.");
}
}
}
}
'대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글
230829_컬렉션 프레임워크 6 (1) | 2023.08.29 |
---|---|
230828_컬렉션 프레임워크 5 (1) | 2023.08.28 |
230824_컬렉션 프레임워크 3 (1) | 2023.08.24 |
230823_컬렉션 프레임워크 2 (0) | 2023.08.23 |
230822_컬렉션 프레임워크 1 (0) | 2023.08.22 |