728x90
반응형
안녕하세요
이번엔 로또 번호 생성기가 숙제입니다.
오늘 array부분을 배우고 문제 풀다 로또생성기 부분에서 시간이 다되어
로또번호 생성기가 숙제가 되었습니다.
아래는 제가 처음 풀었던 방식입니다.
int[] lotto = new int[6];
df:for(int i = 1; i < lotto.length;) {
lotto[i] = new Random().nextInt(45)+1;
for(int j= 0; j <i ; j++) {
if(lotto[i] == lotto[j]) {
continue df;
}
}
System.out.print(lotto[i] + " ");
i++;
}
}
위 코드 방식과 하면
로또 번호가 5개 밖에 안나옵니다.
그래서 뭐가 문제인가
계속 고민하고 수소문 해보니..
array 구간의 선언 하는 법은
배열선언
자료형[ ] 배열명; -> int [ ] ar;
배열 생성
배열명 = new 자료형[개수(길이)]; -> ar = new int[4];
이렇게 되며
int[4];는
0에서 부터 시작해서 3까지 총 4개의 방을 만드는 식입니다.
그래서 위의 실수는
for (int i=1;)로 인해 1부터 6까지의 방을 만드는데
for(int j= 0; j <i ; j++) {
으로 j<i는 6<6
6<6은 거짓이라 5개만 나오는것입니다.
그리하여 수정한 코드는
int[] lotto = new int[6];
df:for(int i = 0; i < lotto.length;) {
lotto[i] = new Random().nextInt(45)+1;
for(int j= 0; j <i ; j++) {
if(lotto[i] == lotto[j]) {
continue df;
}
}
System.out.print(lotto[i] + " ");
i++;
}
}
array 선언 방법을 다시 깨닫고 바꾼부분은
for(int i = 0; i < lotto.length;)의 int i = 0;으로
방이 0부터 5까지
5는 6보다 작으니 참으로
0, 1, 2, 3, 4, 5 총 6개의 방으로 숫자가 겹치지 않게 나오는
코드가 만들어지는것입니다.
자바의
이런 문법들은
영어의 abcd같은 아주 아주 기초적이라고 하는데
큰일입니다...
728x90
반응형
'JAVA(폐쇄) > 문제풀이' 카테고리의 다른 글
백준(BACKJOON) 18108 문제풀이 JAVA (0) | 2023.03.01 |
---|---|
JAVA - Method 문 총합을 구하는 함수를 만들자 (0) | 2023.02.23 |
사칙연산 (0) | 2023.02.15 |
입출력과 사칙연산 (0) | 2023.02.15 |
1/30 array 문제풀이(응용) (0) | 2023.01.31 |