java 로또번호 생성코드 질문드립니다


import java.util.*;
//lotto number
public class Pre4 {
public static void main(String[] args){
    Random rann = new Random();
    int[] a = new int[45];
    int[] b = new int[7];
    for(int q=0;q<a.length;q++){
        a[q]=q+1;
    }
    for(int w=0;w<7;w++){
        int r = rann.nextInt(45)+1;
        b[w]=a[r];
    }   
    System.out.print("결과 : ");
    for(int t=0;t<b.length;t++){
    System.out.print(b[t]+",");
    }
  }
}

로또 번호 생성하는 코드를작성해봤는데 실행은 잘되는데 가끔씩 ArrayIndexOutOfBoundsException이 발생하네요 이유가 무엇인가요?

  • 2016년 08월 26일에 작성됨

조회수 156


1 답변


좋아요
2
싫어요
채택취소하기
    for(int w=0;w<7;w++){
        int r = rann.nextInt(45)+1;
        b[w]=a[r];
    }   

이 부분에서 int r= rann.nextInt(45)+1에 발생하는 값은 1 ~ 45가 됩니다.

따라서 배열 a[r]을 참조할 경우 변수 r이 45가 될 수 있는 데 반해, 배열 a0~44까지의 참조만 가능함으로 에러가 발생할 수 있습니다.

  • 2016년 08월 26일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close