我是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; }
我可以看到问题可能在我初始化的手中,但是我事实上我没有要求从代码的手部分返回任何东西,这让我相信这不是问题所在.
Player[] total = new Player[4]; total[1].addMoney(y);
初始化对象数组时,它将被"填充"空引用.因此,在这种情况下,total[1]
除非您将Player实例分配给索引1,否则将返回null:total[1] = new Player();