在我正在编写的二十一点程序中,我正在使用的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();
}
答案 0 :(得分: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();
在循环中执行。我只是举个例子