-4
저는 LibGDX를 사용하여 Android 용 게임을 제작하고 있습니다. 이 클래스에서 널 포인터 예외가 발생하지만 이유를 모르겠습니다 (설명을 확인하십시오).Java - 메서드 호출시 Null 포인터 예외가 발생했습니다.
public class ScoreFont {
private Texture _numbers[];
private int _number;
public ScoreFont(){
//Load font
for(int i = 0; i <= 9; i++){
_numbers = new Texture[10];
_numbers[i] = new Texture("font_"+i+".png");
/*the line above works fine. if I use if(_number[i] != null) System.out.println("loaded"); it will print*/
}
_number = 0;
}
public void setNumber(int number){
_number = number;
}
public void draw(SpriteBatch sb, float x, float y, float width, float height){
String numberString = Integer.toString(_number);
int numDigits = numberString.length();
float totalWidth = width * numDigits;
//Draw digits
for(int i = 0; i < numDigits; i++){
int digit = Character.getNumericValue(numberString.charAt(i));
/*I get a null pointer exception when this method or the dispose() method are called. The _numbers[digit] == null, or even if I switch it for _numbers[0] it is still null. Why?*/
sb.draw(_numbers[digit], x - totalWidth/2 + i*width, y - height/2, width, height);
}
}
public void dispose(){
//I get null pointer exception
for(Texture texture: _numbers){
texture.dispose();
}
}
}
여기에 무슨 일이 일어날 수 있습니까? 이 함수의 생성자는 항상 모든 메서드보다 먼저 호출되어야하며 이는 텍스처가 항상 올바르게로드되도록 보장합니다. 그렇다면 왜 널 포인터 예외가 발생합니까?
감사합니다.
@ John3136 NullPointerException이 무엇인지 압니다. 여기서 오류를 찾을 수 없습니다. 나는 정말로 당신이 행동을하기 전에 전체 질문을 읽어야한다고 생각합니다. –
귀하의 생성자. 루프를 돌 때마다 새로운 텍스쳐를 만들었습니다. 루프가 종료되면'_numbers [9]'만이 null이되지 않습니다. –
무엇인지 알고 있어야합니다 - 디버그, 중단 점을 설정하십시오. 값을 인쇄하십시오. * 왜 * 알아보십시오. –