HashSet野球ゲーム
3018 ワード
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;
public class SemBase {
ArrayList<Integer> numList;//난수가 저장될 list
ArrayList<Integer> userList; //사용자가 입력한 값이 저장될 list
int strike, ball;
Scanner scan = new Scanner(System.in);
//1~9 사이의 서로 다른 난수 3개를 만들어서 List에 저장하는 메서드
//Set을 이용한다.
public void getNum(){
Set<Integer> numSet = new HashSet<Integer>();
//1~9사이의 난수 3개 만들기
while(numSet.size() < 3){
numSet.add((int)(Math.random() * 9 + 1));
}
//만들어진 난수를 List에 저장하기
numList = new ArrayList<>(numSet);
//List의 데이터를 섞어준다.
Collections.shuffle(numList);
}
//사용자로부터 3개의 정수를 입력받아 List에 저장하는 메서드
//입력한 정수는 중복되지 않게 한다.
public void inputNum(){
int n1,n2,n3; //입력한 정수가 저장될 변수 선언
do{
System.out.print("숫자입력 => ");
n1 = scan.nextInt();
n2 = scan.nextInt();
n3 = scan.nextInt();
if(n1 == n2 || n1 == n3 || n2 == n3){
System.out.println("중복되는 숫자는 입력할 수 없습니다.");
System.out.println("다시 입력하세요.");
}
}while(n1 == n2 || n1 == n3 || n2 == n3);//같으면 반복
//입력받은 데이터를 List에 저장한다.
userList = new ArrayList<>();//리스트에 숫자 세개
userList.add(n1);
userList.add(n2);
userList.add(n3);
}
//스트라이크와 볼을 판정하고 출력하는 메서드
public void ballCount(){
strike = 0;
ball = 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++;
}
}
}
}
//볼 카운트 결과 출력하기
System.out.println(userList.get(0)+ ", "+ userList.get(1)
+ ", " +userList.get(2)+ "=>"+strike + "S "
+ ball + "B");
}
//게임을 진행하는 메서드
public void startGame(){
//난수를 만드는 메서드 호출
getNum();
//확인용 출력
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) {
SemBase test = new SemBase();
test.startGame();
}
}
Reference
この問題について(HashSet野球ゲーム), 我々は、より多くの情報をここで見つけました https://velog.io/@susan9905/HashSet-야구-게임テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol