728x90
728x90
에러 발생 코드
public class LottoFrameError extends JFrame implements ActionListener {
JButton button;
int[] lotto;
// 중략 //
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("게임 시작 ~");
LottoRandomNumberBefore lottoRandomNumber = new LottoRandomNumberBefore(); // 객체 생성
lottoRandomNumber.lottoNumber(); // 번호 생성
lotto = lottoRandomNumber.getLotto(); // 로또 번호 멤버 변수 가져오기
// 콘솔에 번호 출력
for (int i = 0; i < lotto.length; i++) {
System.out.println("lotto : " + lotto[i]);
}
repaint();
}
@Override
public void paint(Graphics g) {
super.paint(g);
Font f = new Font("궁서체", Font.ITALIC, 25);
g.setFont(f);
if (lotto[0] == 0) { // 여기서 NullPointerException 오류 발생
g.drawString("버튼을 눌러 번호를 확인하세요!", 120, 200);
return;
}
int x = 50;
for (int i = 0; i < lotto.length; i++) {
if (i == 0) {
g.drawString(lotto[i] + "", x, 200);
} else {
g.drawString(lotto[i] + "", x += 100, 200);
}
} // end of for
} // end of paint
}
- 컴파일 시점에서는 문제가 없었는데, 실행하면 에러가 뜸
- GUI 창은 출력되지만, 아래 if 문의 코드가 실행되지 않음
if (lotto[0] == 0) {
g.drawString("버튼을 눌러 번호를 확인하세요!", 120, 200);
return;
}
코드 수정
- 멤버 변수인 lotto 배열이 인스턴스화되지 않아서 생긴 문제
// 이전
int[] lotto;
// 수정
int[] lotto = new int[6];
- 멤버 변수 선언 코드에서, lotto 배열을 선언+초기화하는 코드로 수정해주면 에러가 해결됨
- 완성된 코드 : https://young0105.tistory.com/93
320x100
반응형
'Error Note' 카테고리의 다른 글
[MSSQL] DB에 중문 데이터 삽입 시 글자가 깨지는 문제 (1) | 2023.12.21 |
---|---|
[Spring Boot] MyBatis xml 파일에서 WHERE ... LIKE 문 사용하기 (0) | 2023.04.26 |
[JSP] JSTL 태그 안에 HTML 주석 작성 시 오류 (0) | 2023.04.14 |
[Java/Swing] getText()를 사용할 수 없는 JPasswordField에서 값 가져오기 (0) | 2023.03.12 |
[Java] 포함 관계 구현 중 NullPointerException 발생 (0) | 2023.02.07 |