cantmano是索引,它从0开始。另一种方法用cant ++增加。 我重新检查0< = cantmano< = 10
public void dibujar(){
//actualiza la pantalla
if (cantmano >= 0 && cantmano < 10 && cantcroupier >= 0 && cantcroupier < 10){
TextView textomano = (TextView)findViewById(R.id.textView3);
TextView textocroupier = (TextView)findViewById(R.id.textView5);
CharSequence buffer = textomano.getText();
textomano.setText( buffer + " " +
String.valueOf(manojugador[cantmano].getPalo())+ " de " +
String.valueOf(manojugador[cantmano].getNumero()) ); // <-- ERROR
textocroupier.setText( String.valueOf(cantmano) );
}
}
我得到了一个很好的
Caused by: java.lang.NullPointerException at com.pruebas.blackjack.blackjack.dibujar(blackjack.java:58) at com.pruebas.blackjack.blackjack.onCreate(blackjack.java:23) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2717)
编辑:
.getNumero()
返回带有请求的CARD值的int。 (扑克牌式)
.getPalo()
返回一个int,其中1 =钻石等
manojugador的初始化:
Carta manojugador[]= new Carta[10];
constructor of Carta:
public Carta(){
int palo=0;
int numero=0;
}
MIDNIGHT UPDATE: 通过一些改进,我设法让它克服了错误。但是现在数组在写入时具有全0值。这必须是一个容易解决的问题,但这是接受最佳答案之前的最后一步。
以下是添加卡片的方法:
public void hit(View v){
//sacan cartas
if (cantmano < manojugador.length){
manojugador[cantmano]=mazo.darcarta(); //adds a random Card to the manojugador. mazo means deck.
manocroupier[cantcroupier]=mazo.darcarta(); //adds a random Card to the manojugador. mazo means deck.
cantmano++;
cantcroupier++;
}
dibujar();
}
答案 0 :(得分:3)
您必须初始化数组和它的元素。如果你只是这个:
Carta manojugador[]= new Carta[10];
然后数组的所有10个元素都是null
。您还必须初始化每个元素。像这样:
for(int i=0, length=manojugador.length; i<length; i++) {
manojugador[i] = new Carta();
}
我在hit()
方法中看到,我看到你有:
if (cantmano <= 8) {
不应该是:
if (cantmano < 10) {
甚至更好:
if (cantmano < manojugador.length) {
我认为导致NullPointerException
的代码中发生的事情是manojugador[9]
永远无法初始化。
答案 1 :(得分:2)
您的manojugador
数组null元素和cantmano
以某种方式指向其中一个null元素。
例如,假设你有:
ManoJugador [] cantmano = new ManoJugador[10];
cantmano[0] = new ManoJugador();
cantmano[1] = new ManoJugador();
cantmano[2] = new ManoJugador();
您在索引3之外的数组中有空值。这就是为什么当你试图获得null的数值时,你会得到NullPointerException。
修改强>
根据你的编辑:
Yeap,当然,那里你有一个空值。调试该部分,你会看到一些空值
提示:System.out.println( java.util.Arrays.toString( someArray ));
Suerte!