[해결] 단순 대소문자 오타
Collections.shuffle( 배열 );
=> Collections의 C 반드시 대문자로!!
[질문] 왜 에러인지 모르겠습니다 ㅠ
# 로또 번호 생성기
#### CODE <a class='btn btn-default' href='/codes/23548'>Link</a>
```
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main (String[] args) {
//배열 nums는 : 1 ~ 45 까지 랜덤한 숫자
ArrayList<Integer> nums = new ArrayList<Integer>();
for(int i = 1; i <= 45; i++){
nums.add(i);
}
collections.shuffle(nums);
//배열 nums에서 => 6개 뽑자
int[] pickedNum = new int[6];
System.out.print("생성 번호: ");
for(int k = 0; k < pickedNum.length; k++){
pickedNum[k] = nums.remove(k);
System.out.printf("%d ", pickedNum[k]);
}
}
}
```
#### INPUT
```
```
#### OUPUT
```
/root/var/tmp/2020_05_23_11_22_57_29336bd9/Main.java:14: error: cannot find symbol
collections.shuffle(nums);
^
symbol: variable collections
location: class Main
1 error
```
sehongpark님의 답변
# 자바 API는
대소문자를 구분합니다. 아래와 같이 코드를 변경해보세요.
```
# 변경 전
collections.shuffle(nums);
# 변경 후
Collections.shuffle(nums);
```
## PS.
질문 감사합니다!
tkgksw님의 답변
import java.util.Collections 의 의미는 java.util 패키지에 존재하는 Collections클래스를 현재 클래스에서 가져다 쓰겠다는 의미입니다.
즉 shuffle메소드는 Collection 인터페이스에 선언된 추상메소드 인데 Collections클래스가 Collection인터페이스를 구현해서 shuffle메소드를 재정의 한것입니다.
그러므로 shuffle메소드를 호출할때 클래스명.메소드명 즉 Collections.shuffle() 형식으로 호출해 주어야 합니다.
wldudrhdwndi님의 답변
아 대소문자 오타였네요 감사합니다 ㅠㅠ
[2차 질문]
이 정답 코드 말고
다른 비슷한 문제의 정답 코드 대로 풀었습니다 (쉬워서)
이 어려운 정답 코드 대로 하는 이유가 있나요? 학습의 이유인가요?
특히 이 부분이 너무 어려웠습니다 (이해는 완료)
```
=> 임의의 수 6개 추출
for (int i = 0; i < 6; i++) {
pickedNumbers[i] = numbers.remove(rand.nextInt(numbers.size()));
}
```
sehongpark님의 답변
# 맞습니다. 정답 코드는,
학습에 목적이 있습니다. Collections를 사용하지 않은, Random과 ArrayList만으로 구현한 예가 되겠습니다.