当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《空指针异常,只有当我尝试数组形式的类型时》经验,为你挑选了1个好方法。

我是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> andrucz..:
Player[] total = new Player[4];
total[1].addMoney(y);

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

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有