문제풀이
이름에 해당하는 id 맞추기 게임
H_eh
2022. 6. 8. 00:05
- 번호를 선택하면 해당 함수를 불러온다
- 1 = 데이터입력 - in()
- 2 = 게임 시작 - out()
- 3 = 종료 - end()
- ArrayList에 이름과 id를 저장한다.
- 이름과 id를 입력받아,
- 기존에 있는 값이면 "이미 있습니다", 없는 값이면 ArrayList에 추가한다.
- "stop" 을 입력하면 함수가 종료된다.
- 해당 이름의 ID를 맞추시오
- 임의의 인덱스번호를 가져와,
- 인덱스번호에 해당하는 이름을 가져온다.
- 이름과 id가 일치하면 "정답", 아니면 "틀림"을 반환한다.
- 정수 '999'를 입력하면 함수가 종료된다.
- 인물 클래스
class PersonRe {
private String name;
private int id;
PersonRe(String n, int i) {
name = n; id = i;
}
String getName () {
return name;
}
int getId() {
return id;
}
public boolean equals(Object obj) {
PersonRe p = (PersonRe)obj;
if(p.getId()==this.id && p.getName()==this.name) {
return true;
}
return false;
}
public String toString() {
return name+", "+ id;
}
}
- 게임 클래스
class GameRe {
Scanner sc = new Scanner(System.in);
ArrayList<PersonRe> a = new ArrayList<PersonRe>(5);
//입력 데이터와 비교하기 위해 기초데이터 입력
GameRe(){
a.add(new PersonRe("세종", 123));
a.add(new PersonRe("정조", 456));
}
void in() {
while(true) {
System.out.println("이름과 id 입력:");
String name = sc.next();
if(name.equals("stop")) {
break;
}
int id = sc.nextInt();
PersonRe pr =
new PersonRe(name, id);
if(a.contains(pr)) {
//a ArrayList에 pr 객체가 있으면
System.out.printf("%s 는 이미 있습니다", pr.getName());
}
else {
a.add(pr);
}
}
}
void out() {
while(true) {
Random r = new Random();
int n = r.nextInt(a.size());
//ArrayList 크기의 범위에서 난수 발생시켜 n에 저장
PersonRe pr = a.get(n);
//ArrayList 에서 인덱스 n을 꺼내와서
String str = pr.getName();
//그 이름을 str에 저장한다
System.out.printf("문제: %s의 id는?", str);
int id = pr.getId(); //답이 되는 id
int i = sc.nextInt(); //입력 받는 답
if(i >= 999) {
break;
}
if(i == id) {
System.out.println("정답입니다");
}
else {
System.out.println("틀렸습니다");
}
}
}
void end() {
System.out.println("프로그램이 종료됩니다");
System.exit(0);
}
void show() {
for(PersonRe aa : a) {
System.out.println(aa);
}
}
}
- 메인 클래스
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
GameRe g = new GameRe();
while(true) {
System.out.println("선택하시오 \n "
+ "1. 데이터입력, 2. 게임시작, 3. 종료, 4. 목록");
int selectNum = sc.nextInt();
switch(selectNum) {
case 1:
g.in();
break;
case 2:
g.out();
break;
case 3:
g.end();
break;
case 4:
g.show();
}
}
}
728x90
728x90