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