每次我增加下面的内容来更新我的方法创建的时候,我在线程“main”java.lang.NullPointerException错误中得到一个Exception。我不知道造成这种情况的原因,也许是“做”循环?我已尽力而为,并非旨在导入任何包
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");
}
有什么建议吗?
答案 0 :(得分:1)
你应该看一下你的数组:computerCards。你似乎总是用true输入那个方法,所以你总是会调用computerCards [0] .name,它可能是空的。你应该在该方法的开头加上一个断点,然后调试以查看你是否在第0位有一个值。
答案 1 :(得分:1)
在文件末尾br.readLine()
将返回null
。而你的下一个等于休息。