# 로또 번호 생성기 이런경우는 처음이라 질문 드립니다. 코드를 완성했는데 실행을 시키면 정상작동 하는 경우도 있고 에러가 나는 경우도 있습니다. 이런경우는 어떤 경우인가요..? #### CODE <a class='btn btn-default' href='/codes/53550'>Link</a> ``` import java.util.ArrayList; import java.util.List; import java.util.Random; public class Lotto { public static void main(String[] args) { RandomNumGenerate randomNum = new RandomNumGenerate(); makeString makeString = new makeString(); List<Integer> lotto = randomNum.randomMake(); System.out.println(makeString.toString(lotto)); } } class RandomNumGenerate{ Random random = new Random(); public List<Integer> randomMake(){ List<Integer> lottoNum = new ArrayList<>(); for(int i = 0; i < 6; i++){ int number = random.nextInt(45) + 1; if(!lottoNum.contains(number)){ lottoNum.add(number); } } return lottoNum; } } class makeString{ public String toString(List<Integer> lottoNum) { String result = ""; String a = ""; for (int i = 0; i < 6; i++) { a += String.format("%d ", lottoNum.get(i)); } result = "생성 번호: " + a; return result; } } ``` #### INPUT ``` ``` #### OUPUT ``` 생성 번호: 29 4 41 15 27 19 ```
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 5 out of bounds for length 5 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:372) at java.base/java.util.ArrayList.get(ArrayList.java:459) at cloudstudyingFinal.makeString.toString(Lotto.java:38) at cloudstudyingFinal.Lotto.main(Lotto.java:13) 에러가 나면 이렇게 나옵니다 한 4번 잘 나오다가 이런 에러가 나옵니다..
IndexOutOfBoundsException을 검색해보세요 배열의 범위를 벗어나는 랜덤값이 생성되는듯 합니다.
for 문으로 i < 6으로 돌리다 보니 중복값이 랜덤생성 됐을 때 배열에 제대로 들어가지 않는 경우가 생겼었습니다! for 문을 while 문으로 바꾸어 수정하였습니다!