Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 누승재귀
- read()함수
- 자바switch문
- 변수의 초기화
- 팩토리얼재귀
- 자바함수
- 자바자료형
- 효율적인연산
- 연산자우선순위
- 자바접근지정자
- 프로그래머스
- 겟셋함수
- 변수명명규칙
- 기타제어자
- 오라클
- SQL
- 오버로딩
- 자바if문
- 자바제어문
- 자바수우미양가
- 자바연산자
- 중첩for문
- 자바기타제어자
- 클래스배열
- 자바상수
- 반복문라벨
- 자바클래스
- 자바형식
- 자바실행방법
- 자바별찍기
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] 랜덤 로또 번호 발생기 본문
package days08;
/**
* @author Hini
* @date 2021. 3. 17 - 오후 4:17:52
* @subject 향상된 for문 p.166 (foreach문) 확장for문
* @content JDK 1.5 이후~ 배열 또는 컬렉션에 저장된 요소의 값을 접근해서 사용할 때 ... 편리..
*
*/
public class Ex07 {
public static void main(String[] args) {
int [] m = new int[10];
fillM(m); //난수를 발생시켜서 배열 각 요소에 채워넣는 함수
outputM(m); //출력함수
//foreach
/*
for (int i : 배열명 또는 컬렉션명) {
//요소의 값에 접근해서 사용 (저장하는게 아님)
}
*/
}//main
private static void outputM(int[] m) {
/*
for (int i = 0; i < m.length; i++) {
System.out.printf("[%d]", m[i]);
}
System.out.println();
*/
//foreach
for (int i : m) {
System.out.printf("[%d]", i);
}
System.out.println();
}//outputM
private static void fillM(int[] m) {
for (int i = 0; i < m.length; i++) {
m[i] = (int) (Math.random()*101); //0<= m[i] <=100
}
}//fillM
}//class
package days09;
public class Ex02 {
public static void main(String[] args) {
// 로또 번호 발생 -> 배열 추가 -> 출력
int [] lotto = new int [6];
fillLotto(lotto);
printLotto(lotto);
}//main
// private static void fillLotto(int[] lotto) {
// for (int i = 0; i < lotto.length; i++) {
// lotto[i] = (int)(Math.random()*45) +1;
// }//for
// }//fill
//내가푼거...
// [0][0][0][0][0][0]
/*
private static void fillLotto(int[] lotto) {
// while 6개를 모두 채워넣을 때까지 반복
int idx = -1, lastIdx = -1;
int len = lotto.length;
while ( ! (idx==len-1 && lastIdx==len-1) || ( idx==-1 && lastIdx==-1) ) {
int num = (int)(Math.random()*45)+1;
for (int i = 0; i < len; i++) {
if(lotto[i]==num) idx = i;
}
for (int i = len-1; i >= 0; i--) {
if(lotto[i]==num) lastIdx = i;
}
if ((idx == lastIdx) && idx != -1) lotto[idx]=num;
}
}//fill
*/
//풀이
// [0][0][0][0][0][0]
private static void fillLotto(int[] lotto) {
// while 6개를 모두 채워넣을 때까지 반복
int num = (int)(Math.random()*45)+1;
lotto[0] = num;
int idx = 1; //2,3,4,5
boolean flag = false; //중복되지 않는다
while ( idx <= 5 ) {
flag = false; //초기화 **
num = (int)(Math.random()*45)+1;
System.out.println(num);
// 로또번호 중복체크
for (int i = 0; i < idx; i++) {
if (num==lotto[i]) {
flag=true;
break;
}
}
if(!flag) {
lotto[idx]=num;
idx++;
}//if
}//while
}//fill
private static void printLotto(int[] lotto) {
for (int i = 0; i < lotto.length; i++) {
System.out.printf("[%02d]", lotto[i]);
}//for
System.out.println();
}//print
}//class
package days09;
public class Ex02_03 {
public static void main(String[] args) {
int [] lotto = new int [6];
fillLotto(lotto);
printLotto(lotto);
}//main
private static void fillLotto(int[] lotto) {
int n, idx = 0;
while (idx<=5) {
n = (int) (Math.random()*45) +1;
// 중복체크함수
if (! isDuplicateLottoCheck(lotto, idx,n)) {
lotto[idx]=n;
idx++;
}
}//while
}
private static void printLotto(int[] lotto) {
for (int i = 0; i < lotto.length; i++) {
System.out.printf("[%02d]", lotto[i]);
}//for
System.out.println();
}
private static boolean isDuplicateLottoCheck(int[] lotto, int idx, int n) {
for (int i = 0; i <idx; i++) {
if(lotto[i] == n) return true;
}
return false;
}
}//class
> 원하는 게임횟수 입력하여 로또 번호 출력
package days13;
import java.util.Scanner;
public class Ex07_02 {
public static void main(String[] args) {
// 로또
// 게임횟수 * 6
// [게임횟수][6]
// [문제] 게임횟수를 입력받아서
// 3
// [][][][][][]
// [][][][][][]
// [][][][][][]
Scanner scanner = new Scanner(System.in);
int gameNumber = 1;
System.out.print("> 게임횟수 입력 ? ");
gameNumber = scanner.nextInt();
int [][] lottos = new int [gameNumber][6];
// ***배열의 배열
for (int i = 0; i < lottos.length; i++) {
fillLotto(lottos[i]);
}
for (int j = 0; j < lottos.length; j++) {
printLotto(lottos[j]);
}
}//main
private static void fillLotto(int[] lotto) {
int n, idx = 0;
while (idx<=5) {
n = (int) (Math.random()*45) +1;
// 중복체크함수
if (! isDuplicateLottoCheck(lotto, idx,n)) {
lotto[idx]=n;
idx++;
}
}//while
}
private static void printLotto(int[] lotto) {
for (int i = 0; i < lotto.length; i++) {
System.out.printf("[%02d]", lotto[i]);
}//for
System.out.println();
}
private static boolean isDuplicateLottoCheck(int[] lotto, int idx, int n) {
for (int i = 0; i <idx; i++) {
if(lotto[i] == n) return true;
}
return false;
}
}//class
'Java' 카테고리의 다른 글
[Java] 주민등록번호 입력받아 남녀, 내외국인, 출생지, 검증하기 (0) | 2021.07.16 |
---|---|
[Java] 카드번호 랜덤 위치 마스킹 (0) | 2021.07.16 |
[Java] Arrays 클래스 - 배열 요소 검색하기, 배열 복사 (0) | 2021.07.16 |
[Java] 재귀함수(Recursive Function) (0) | 2021.07.16 |
[Java] switch() 예제 (0) | 2021.07.16 |