0

在我正在编写的二十一点程序中,我正在使用的 while 循环中出现空指针异常。

这是循环本身:

int total = 0; 
  for (int x = 5; x <= hitOrStayCounter; x++) 
  {

    total = total + temp[x].getBJ(); //Line 57 where the error is occuring. 
  }

这是定义 hitOrStayCounter 和 temp 的位置:

int hitOrStayCounter=5;
Card[] temp = new Card[300];

这是getBJ方法:

public int getBJ()
{
return bJValue; 
}

我怀疑这是因为我试图在循环中使用一个数组,但在括号中插入一个 int 值。我试图解决它,并想知道你们是否可以帮助给我一个解决方案。我找不到任何类似的问题,但如果你找到了,请指导我,我会删除它。谢谢你的时间。

java.lang.NullPointerException
at Blackjack.main(Blackjack.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at       edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

然后这是我初始化临时值的循环。

 while (hitOrStay.equalsIgnoreCase("hit"))
  {
    temp[hitOrStayCounter] = cardDeck.deal();
    System.out.println("You are delt a " + temp[hitOrStayCounter].getBJ()); 
    hitOrStayCounter = hitOrStayCounter + 2;
    System.out.println("Would you like to hit again?"); 
    hitOrStay = keyboard.next(); 
  }
4

1 回答 1

1

hitOrStayCounter的是5。你正在从 开始你的循环5

for (int x = 0; x <= hitOrStayCounter; x++) 
{
    total = total + temp[x].getBJ(); 
}

如果你是有罪hitOrStayCounter的,那没关系。

确保您的临时对象已初始化。

Card[] temp = new Card[300]; This will not initialize

这将创建 300 个变量。喜欢

Card c1;
Card c2;..

您必须将每个对象分配为temp[0]= new Card();循环执行。我只是举例

于 2013-11-19T13:43:05.683 回答