循环中的空指针异常

时间:2013-11-19 13:38:34

标签: arrays loops pointers null blackjack

在我正在编写的二十一点程序中,我正在使用的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(); 
  }

1 个答案:

答案 0 :(得分:1)

您的hitOrStayCounter5。你正在从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();在循环中执行。我只是举个例子