NullException我增加一个变量?

时间:2015-12-14 18:33:40

标签: java

每次我增加下面的内容来更新我的方法创建的时候,我在线程“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");
}

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

你应该看一下你的数组:computerCards。你似乎总是用true输入那个方法,所以你总是会调用computerCards [0] .name,它可能是空的。你应该在该方法的开头加上一个断点,然后调试以查看你是否在第0位有一个值。

答案 1 :(得分:1)

在文件末尾br.readLine()将返回null。而你的下一个等于休息。