반응형
로또
1에서 45까지의 수 중에서 6개를 랜덤으로 중복없이 뽑아서 배열에 담는 프로그램
public void Lotto() {
//크기 6의 배열객체 생성
int [] lots=new int[6];
for(int i=0;i<lots.length;i++) {
//1~45의 숫자 랜덤으로 뽑아서 배열에 초기화
lots[i]=(int)(Math.random()*45)+1;
//뽑은 숫자가 이전의 배열요소에 포함되어있는지 확인
for(int j=0;j<i;j++) {
//중복이면
if(lots[i]==lots[j]) {
//새로뽑은 인덱스 전으로 돌아가서 다시뽑기
i--;
}
}
}
Arrays.sort(lots);
System.out.println(Arrays.toString(lots));
}
//[7, 11, 17, 20, 32, 35]
하나의 메소드를 만들어서 랜덤하게 뽑아서 중복제거하고 배열에 담을 수 있지만
- 1~45사이의 숫자를 랜덤하게 생성해주는 메서드
- 배열에 6개의 랜덤한 숫자를 담는 메서드
- 중복이 존재하는지 확인하기 위한 메서드
이렇게 3개로 나누어서 코드를 작성해보려고 한다.
코드
//1.1~45사이의 숫자를 랜덤하게 생성해주는 메서드
public int makeBall() {
int num=(int)(Math.random()*45)+1;
return num;
}
//2.배열에 6개의 랜덤한 숫자를 담는 메서드
public void makelotto() {
//6개 랜덤으로 배열에 넣기
for(int i=0;i<lots.length;i++) {
lots[i]=makeBall();
int cnt=0;
//확인하면서 중복이 있는지
while(true) {
int num=makeBall();
if(!check(lots,num)) {
lots[cnt++]=num;
}
if(lots.length==cnt) {
break;
}
}
}
}
//3.중복이 존재하는지 확인하기 위한 메서드
public boolean check(int [] arr,int num) {
boolean isS=false;
for(int i=0;i<arr.length;i++) {
//현재까지 만들어진 lots의 배열을 전달받아서 for문돌면서
//새로 뽑은 값과 같으면 true
if(arr[i]==num) {
isS=true;
break;
}
//아니면 false
}
return isS;
}
//결과
public class LottoTest {
public static void main(String[] args) {
LottoOne lotto=new LottoOne();
System.out.println(Arrays.toString(lotto.lots));
}
}
//[7, 15, 17, 23, 34, 39]
반응형
'Language > JAVA' 카테고리의 다른 글
(JAVA)상속-super, this (0) | 2023.01.19 |
---|---|
(JAVA)객체 지향 프로그래밍(OOP) (0) | 2023.01.18 |
(JAVA)배열 (0) | 2023.01.16 |
(JAVA)String 메서드(문자열 자르기) (0) | 2023.01.13 |
(JAVA)String 비교 (0) | 2023.01.13 |