반응형
package _1229;
import java.util.Arrays;
import java.util.Random;
public class Lotto {
void printVer1() {
// ver1
// 1. 로또숫자 갯수는 6개 .
int lottoNum[] = new int[6];
// 2. 로또 숫자 범위 1~45
int min = 1;
int max = 45;
// 3. 숫자는 랜덤
Random rand = new Random();
// 4. 랜덤숫자 추출
for (int i = 0; i < lottoNum.length; i++) {
// nextInt(45) 이면 해당 범위가 0 ~ 44 이므로
// 내가 실제 구하고 싶은건 1 ~ 45 이기 때문에 마지막에 츼소값인 min을 더해주면 된다!★여기는 이해가 잘 안감.
lottoNum[i] = (rand.nextInt((max - min) + 1) + min);
// 5. 중복제거
for (int j = 0; j < i; j++) {
if (lottoNum[i] == lottoNum[j]) {
i--;
}
// 6. 오름차순
if (lottoNum[i] < lottoNum[j]) {
int lottoNumTemp = lottoNum[i];
lottoNum[i] = lottoNum[j];
lottoNum[j] = lottoNumTemp;
}
}
}
System.out.print("Ver1.Lotto 선택 숫자는? ");
// 6. 출력
for (int i = 0; i < lottoNum.length; i++) {
System.out.print(lottoNum[i] + " ");
}
System.out.println();
}
void printVer2() {
// ver2.
int lotto[] = new int[6];
System.out.print("Ver2.Lotto 선택 숫자는? ");
// System.out.println(lottoNum.length);
for (int x = 0; x < lotto.length; x++) {
lotto[x] = (int) (Math.random() * 45) + 1;
for (int y = 0; x < y; x++) {
if (lotto[x] == lotto[y]) {
x -= 1;
}
}
}
// 6. 오름차순
Arrays.sort(lotto);
// 7. 출력
for (int x = 0; x < lotto.length; x++) {
System.out.print(lotto[x] + " ");
}
}
public static void main(String[] args) {
Lotto lotto = new Lotto();
lotto.printVer1();
lotto.printVer2();
}
}
그리고 이 코드에서 저는 실제 기능은 메서드로 분리를 하고, 메인메서드에서는 해당 메서드만 호출하게끔 하였습니다.
printVer1()메서드와 printVer2()메서드는 static이 아니어서 lotto 객체를 생성한 후 호출하였습니다.
package _1229;
import java.util.Arrays;
import java.util.Random;
public class Lotto {
public static void main(String[] args) {
//ver1
//1. 로또숫자 갯수는 6개 .
int lottoNum[] = new int[6];
//2. 로또 숫자 범위 1~45
int min = 1;
int max = 45;
//3. 숫자는 랜덤
Random rand = new Random();
//4. 랜덤숫자 추출
for(int i=0; i<lottoNum.length; i++) {
// nextInt(45) 이면 해당 범위가 0 ~ 44 이므로 마지막에 최소값인 min을 더해줍니다.
lottoNum[i] = (rand.nextInt((max - min) + 1) + min);
//5. 중복제거
for(int j = 0; j < i;j++) {
if (lottoNum[i] == lottoNum[j]) {
i--;
}
//6. 오름차순
if(lottoNum[i] < lottoNum[j]) {
int lottoNumTemp = lottoNum[i];
lottoNum[i] = lottoNum[j];
lottoNum[j] = lottoNumTemp;
}
}
}
System.out.print("Ver1.Lotto 선택 숫자는? ");
// 6. 출력
for (int i = 0; i < lottoNum.length; i++) {
System.out.print(lottoNum[i]+ " ");
}
System.out.println();
//ver2.
int lotto[] = new int[6];
System.out.print("Ver2.Lotto 선택 숫자는? ");
//System.out.println(lottoNum.length);
for(int x = 0; x <lotto.length; x++ ) {
lotto[x] = (int)(Math.random()*45)+1;
for(int y =0; x<y; x++) {
if(lotto[x] == lotto[y]) {
x-=1;
}
}
}
// 오름차순
Arrays.sort(lotto);
// 출력
for (int x = 0; x < lotto.length; x++) {
System.out.print(lotto[x]+" ");
}
}
}
배열공부하다가.. 갑자기 꽂혀서..
로또번호를 출력하는 코드를 2가지 버전으로 나누어 만들어 보았습니다.
콘솔에 찍히는건 동일하게 랜덤숫자 6가지가 나오지만 조금씩 코드가 달라요~
아..재밋당 ^.^
매주 이 코드 돌려보고 로또를 살까요~?
반응형
댓글