메소드로 푼것 :)
package kr.or.ddit.basic;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
public class BaseBallTest2 {
public static ArrayList<Integer> listTest = new ArrayList<>();
public static int count = 1;
public static void main(String[] args) {
// TODO Auto-generated method stub
// new BaseBallTest().gameStart(); 이렇게 아래두줄을 간단하게 한줄로 쓸 수 있다.
// BaseBllTest baseBall = new BaseBallTest();
// baseBall.gameStart();
HashSet<Integer> setTest = new HashSet<>();
int num;
while (setTest.size() < 3) {
int random = (int) ((Math.random() * 9) + 1);
setTest.add(random);
}
//System.out.println(setTest);
listTest = new ArrayList<>(setTest);
/* random 으로 set에 넣어주면 자리수가 같으면, 대체로 정렬이 나온순서대로 되기 때문에, 섞어준다. */
Collections.shuffle(listTest);
do {
ArrayList strikeBall = new ArrayList();
ArrayList listTest2 = numForCustomer();
strikeBall = base(listTest, listTest2);
num = compare(strikeBall);
count++;
} while (num != 3);
}
static ArrayList<Integer> numForCustomer() {
ArrayList listTest2 = new ArrayList();
Scanner sc = new Scanner(System.in);
while (listTest2.size() < 3) {
System.out.println("세가지 서로 다른 숫자를 입력해주세요");
System.out.println("숫자를 입력해주세요");
int num = sc.nextInt();
listTest2.add(num);
}
/*
* 선생님 방법. int n1 ; int n2 ; int n3 ;
*
* do {
*
* System.out.println("숫자입력=>"); 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 );
*
* listTest2.add(n1); listTest2.add(n2); listTest2.add(n3);
*
또는 처음에 HashSet 으로 만들어주면 중복되는 애를 넣을 수 없으니까, 그렇게 하고 ArrayList 에 넣어주어도 된다. HashSet 의 길이를 조절해주면 조건에 충족할 수 있으니까..
/
System.out.println(listTest2);
return listTest2;
} // numForCustomer()
static ArrayList base(ArrayList listTest, ArrayList listTest2) {
int strike = 0;
int ball = 0;
ArrayList strikeBall = new ArrayList();
for (int i = 0; i < listTest.size(); i++) {
for (int k = 0; k < listTest2.size(); k++) {
if (listTest.get(i) == listTest2.get(k)) {
if (i == k) {
strike++;
} else {
ball++;
}
} // if 끝
} // 두번째for 끝
} // 첫번째 for 끝
strikeBall.add(strike);
strikeBall.add(ball);
return strikeBall;
}
static int compare(ArrayList strikeBall) {
if ((Integer) strikeBall.get(0) == 3) {
System.out.println(count + "번째 시도후에 정답을 발견했습니다.");
return (Integer) strikeBall.get(0);
} else {
System.out.println(strikeBall.get(0) + "S " + strikeBall.get(1) + "B");
System.out.println("다시 시도해주세요");
return 0;
}
}// 메소드 copare 끝
}
-----------------------------------------------------------------------------------------------------
첫번째로 푼것
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
public class Lee {
static int strike = 0;
static int ball = 0;
static int i = 0 ;
public static void main(String[] args) {
HashSet<Integer> setTest = new HashSet<>();
while (setTest.size() < 3) {
int random = (int) ((Math.random() * 9) + 1);
setTest.add(random);
}
System.out.println(setTest);
// 컴퓨터 랜덤 수는 만들어짐
ArrayList<Integer> listTest = new ArrayList<>(setTest);
// 컴퓨터 랜덤 수를 리스트 타입으로 만들어줌
System.out.println(listTest);
// 사용자 만들어줌
do{
strike = 0 ;
ball = 0 ;
ArrayList<Integer> listTest2 = new ArrayList<>();
Scanner sc = new Scanner(System.in);
System.out.println("세가지 숫자를 입력해주세요");
while (listTest2.size() < 3) {
System.out.println("숫자를 입력해주세요");
int num = sc.nextInt();
listTest2.add(num);
}
System.out.println(listTest2);
// 만들어진것 : listTest 과 ,listTest2
// 두개를 비교 컴퓨터애의 첫번째부터 마지막 인덱스까지의 값과 사람들이 뽑은 첫번째부터
// 마지막까지의 값을 비교한다.
for (int i = 0; i < listTest.size(); i++) {
for (int k = 0; k < listTest2.size(); k++) {
if (listTest.get(i) == listTest2.get(k)) {
if (i == k) {
strike++;
}
else {
ball++;
}
}// if 끝
}// 두번째 for 끝
} // 첫번째 for 끝
if (strike == 3) {
System.out.println(1 + i + "회 만에 " + "정답입니다.");
} //if 닫기
else {
System.out.println(strike + "S " + ball + "B");
System.out.println("틀렸습니다. 다른 세개의 숫자를 입력해주세요 " );
i++;}
}while(!(strike == 3));
} //main 닫기
} //전체 닫기
-------------------------------------------------------------------------------------------------
import java.util.ArrayList;
import java.util.Scanner;
public class LotoProgram {
public static void main(String[] args) {
// TODO Auto-generated method stub
int count;
System.out.println("Lotto 프로그램");
System.out.println("===================================");
Scanner sc = new Scanner(System.in);
System.out.println("-----------------------------------");
System.out.println("원하시는 번호를 입력해 주세요");
System.out.println("1.Lotto 구입 2. 프로그램 종료");
int num = sc.nextInt();
switch (num) {
case 1:
count = buy();
if (count > 0) {
select(count);
}
case 2:
System.out.println("프로그램이 종료되었습니다.");
}
}
static int buy() {
Scanner sc = new Scanner(System.in);
System.out.println("Lotto 구입 시작 1000원에 로또번호 하나입니다.");
System.out.println("구매하실 금액을 입력하세요");
int money = sc.nextInt();
if (money < 1000) {
System.out.println("금액이 너무 적습니다 로또번호 구입 실패.");
return 0;
} else if (money > 100000) {
System.out.println("금액이 너무 많습니다 로또번호 구입 실패.");
return 0;
} else {
int count = money / 1000;
int remainder = money - (count * 1000);
System.out.println(count + "장을 구매했습니다.");
System.out.println("거스름돈 : " + remainder);
return count;
}
} // buy 메소드 칸
static void select(int count) {
for (int i = 0; i < count; i++) {
ArrayList listTest = new ArrayList();
for (int k = 0; k < 6; k++) {
int lottoNum = (int) (Math.random() * 45 + 1);
listTest.add(lottoNum);
}
System.out.println((i + 1) + "번째 로또 번호" + listTest);
}
}
}
댓글
댓글 쓰기