每次我增加以下内容以更新由我的方法创建的内容时,我都会收到 Exception in thread "main"java.lang.NullPointerException 错误。我不知道是什么原因造成的,也许是“do”循环?我已尽我所能,并不打算导入任何包
userCardsCount = 2;
boolean trueScore = userSum <= 21;
do{
displayCards(true);
// User turn
int i = 2;
System.out.println("\nUSER'S TURN");
System.out.print("Draw new card (Y/N): ");
input = br.readLine();
if(input.equals("y") || input.equals("Y") || input.equals("yes") || input.equals("YES")) {
userCardsCount++;
userCards[i] = deck.drawCard();
userSum += userCards[i].value;
System.out.print("\n--> User drew a " + "[" + userCards[i].value + "]\n");
//i++;
} else if(input.equals("n") || input.equals("N") || input.equals("no") || input.equals("NO")) {
// You stay as you are and go to the computer's turn
System.out.println("--> User stays.");
}
else {
System.out.println("\t--> Umm please retry input");
}
} while(trueScore);
方法
public static void displayCards(boolean showHidden)
{
if(showHidden) {
System.out.print("Computer's cards: [" + computerCards[0].name + "]");
} else {
System.out.print("Computer's cards: [X]");
}
for(int i = 1; i < computerCardsCount; i++) {
System.out.print("[" + computerCards[i].name + "]");
}
if(showHidden) {
System.out.print(" (sum: " + computerSum + ")");
}
System.out.print("\nUser's cards: ");
for(int i = 0; i < userCardsCount; i++) {
System.out.print("[" + userCards[i].name + "]");
}
System.out.print(" (sum: " + userSum + ")");
System.out.print("\n");
}
有什么建议吗?
最佳答案
您应该查看您的数组:computerCards。您似乎始终以 true 输入该方法,因此您将始终调用 ComputerCards[0].name ,该名称可能为空。您应该在该方法的开头放置一个断点,然后调试以查看第 0 个位置是否有值。
关于java - 空异常 我增加一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34274151/