문1) 배열을 이용하여, 1~10사이의 수가
중복없이 나오는 프로그램을 작성하시오
Random 클래스 사용
Random random = new Random();
hint : 선형탐색 알고리즘
package 배열;
import java.util.Random;
public class Array3 {
public static void main(String[] args) {
/*
* 중복을 피해서 숫자 나오게 하는방법은?
* 배열안에 특정 숫자가 있는지 비교
* for 반복분 써서 0~9번까지 배열칸을 다 확인한다.
* 있으면, 다시 랜덤을 돌림 (안나올때까지) while
*/
Random random = new Random();
int[] nums = new int[10]; // 공간 할당
for(int i = 0; i < nums.length; i++) { //배열 Index
while(true) {
boolean findFlag = true;
int randomNum = random.nextInt(nums.length)+1; // 1~10사이의 수(랜덤값)가 들어감
for(int j = 0; j < nums.length; j++) { // 검출 함수
if(nums[j] == randomNum) { //nums[10] 10칸의 배열과 randomNum 1~10까지 중 하나의 수
findFlag = false; // 비교와하여 같은지 확인, 같으면 Flag는 false;
break; // 안쪽 for문을 멈춰주는 break; 중복되지 않은 값을 찾았을때,
}
} //
if(findFlag) { // if(true/false) // true일때만 작동
nums[i] = randomNum;
break;
}
}
}// 바깥 for문 끝.
for(int i = 0; i<nums.length; i++) {
System.out.println(nums[i]);
}
}
}
문2) 배열을 사용하여 로또 번호 추출하는 프로그램 작성
package 배열;
public class Array3 {
public static void main(String[] args) {
int[] num = new int[6];
for(int i = 0; i<6; i++) {
num[i] = (int)(Math.random()*45)+1;
for(int j = 0; j<i; j++) {
if(num[i] == num[j]){
i--;
break;
}
}
}
for(int i = 0; i<6; i++) {
System.out.println(num[i]+ " ");
}
}
}