空指针异常,只有当我尝试数组形式的类型时

时间:2015-12-03 19:18:42

标签: java

我是java的新手

这是我的第一个真实项目(纸牌游戏:二十一点)

我做了一个测试课,并被告知要使用打印行试图找出我的问题,但是我无法理解为什么null异常不断出现。我没有任何设置为null,并且我的数组已使用“new”初始化。我也可以发布IO类,但我很确定问题不在其中。

  public static void main(String[] args) {
    // Initializing just a single player
    Player x = new Player();
    // Quick test to make sure it reads the initial value of 0
    System.out.println(x.getMoney());

    // Testing user input using an IO class given
    System.out.println("How much would you guys like to play with?(Bet money)");
    double y = IO.readDouble();
    x.addMoney(y);
    System.out.println(x.getMoney());
    // Successfully prints out the value y

    Player[] total = new Player[4];
    total[1].addMoney(y);

    System.out.println(total[1].getMoney());
    // returns the null pointer exception error

  }

这是我的Player类

package Blackjack;

public class Player {

  private Hand hand = new Hand();
  private double currentMoney = 0;

  private double bet = 0;

  public void takeCard(Card h) {
    hand.addCardToHand(h);
  }

  public double getBet() {
    return bet;
  }

  public double getMoney() {
    return currentMoney;
  }

  public void betMoney(double k) {
    currentMoney = -k;
    bet = +k;
  }

  public void addMoney(double k) {
    currentMoney = currentMoney + k;
  }

  public void resetBet() {
    bet = 0;
  }

我可以看到问题可能在我初始化的手中,但是我事实上我没有要求从代码的手部分返回任何东西,这让我相信这不是问题所在。

1 个答案:

答案 0 :(得分:5)

Player[] total = new Player[4];
total[1].addMoney(y);

初始化一个对象数组时,它被填充"带有空引用。因此,在这种情况下,total[1]将返回null,除非您将Player实例分配给索引1:total[1] = new Player();