today_is
[ array ] 중복 제거한 난수 생성하기 (로또번호 추첨) 본문
오늘의 목표 >>
중복없이 배열에 값을 넣기 위한 방법을 알아볼 것 이다.
뿐만아니라, 앞서 다른 부분을 공부하면서 기능에 따라 코드 영역을 구분하는 것이 중요하다는 것을 느꼈다.
이번에는 기능에 따라 메서드를 구현하여 코드를 작성해볼 것이다.
배열생성, 정렬, 출력 3가지 기능에 따라 메서드를 생성해보겠다.
step 1 > 배열생성하기
import java.util.Random;
public class Test01 {
static int[] getRandomInt() { // getRandomInt() : 한줄씩 랜덤정수를 뽑는다
Random ran = new Random();
int[] arr = new int[6];
int count = 0;
while(count < 6) { // 총 6개의 중복없는 랜덤 정수 뽑기
arr[count] = ran.nextInt(45) + 1;
count += 1;
for(int i = 0; i < arr.length; i++) {
for(int j = i+1; j < count; j++) {
if(arr[i] == arr[j]) { // 중복이 있다면
count--; // 다시 뽑아주어야하니까 count - 1
}
}
}
}
return arr; // 배열 자체를 반환
}
step 2 > 선택정렬
static int[] functions(int[] arr) { // 한줄을 선택정렬하는
for(int i = 0; i < arr.length; i++) {
for(int j = i + 1; j < arr.length; j++) {
int tmp = 0;
if(arr[i] > arr[j]) { // 앞의 값이 더 크면
tmp = arr[i]; // 값의 변화없이 자리 바꾸기 (오름차순)
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
return arr; // 배열을 반환
}
step 3 > 출력
값마다 콤마로 구분해주고,
마지막으로 출력되는 값은 다음값이 없으므로 콤마 없이 출력
static int[] printIntArr(int[] arr) {
for(int i = 0; i < 6; i++) {
if(i < 5) {
System.out.printf("%2d, ", arr[i]);
}
if(i == 5) { // 마지막 값은 콤마 없이 출력
System.out.printf("%2d ", arr[i]);
}
}
System.out.println();
return arr;
}
step 4 > 구현
main 함수를 통해 메서드를 호출하여 결과를 반환해준다.
public static void main(String[] args) {
int[] arr = null; // 빈 배열
for(int i = 0; i < 5; i++) { // 로또 5줄을 산다는 가정하에 5번 반복.
arr = getRandomInt(); // 중복없이 배열 생성하여 빈 배열에 대입
functions(arr); // 선택정렬
printIntArr(arr); // 출력
}
}
study_review >>
처음에는 여러 기능을 분리하여 메서드로 처리하는 과정이 어렵게 느껴졌다.
그러나, 메서드의 역할을 생각하면서 작성했더니 조금은 수월하게 풀렸다.
메서드를 작성할때 유의점 !!
1 ) 메서드가 반환해야할 결과물이 무엇인지 생각해본다
2 ) 메서드가 반환할 결과물의 자료형과
메서드를 호출하여 결과를 받을 변수의 자료형이 일치하게 작성해야한다
3 ) main 에는 최대한 코드 작성을 줄인다
-> 내용이 없어야한다기보다는 메인에는 메서드를 호출하여 결과물을 받아 결과를 출력할 부분만 담당
무엇을 구현하고 싶은지, 그것을 구현하기 위해서는 어떤 기능들이 필요한지 항상 먼저 생각해보자 !
'java' 카테고리의 다른 글
[ loop ] for, while 반복문 (0) | 2023.11.20 |
---|---|
[ control ] if ~ else , switch case (0) | 2023.11.17 |
[ collection ] (0) | 2023.11.16 |
[ java ] 페이징(paging) 알고리즘 (0) | 2023.11.07 |
[ java ] 객체지향 언어, java (0) | 2023.11.03 |