2020.10.23 고급자바 과제 내코드 완성

메소드로 푼것 :) 

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);
}

}

}

댓글