Java简单21点游戏,Java.lang.NullPointerException

Java简单21点游戏,Java.lang.NullPointerException,java,arrays,blackjack,Java,Arrays,Blackjack,我正在编写一个java程序来制作一个简单的21点游戏 我使用一组卡片对象作为用户的手 用户将获得手中的两张牌,但是他们可以要求另一张牌,直到他们达到5张牌的限制 出于这个原因,我制作了5个插槽的卡片对象阵列,以允许将更多的卡片添加到手上 但是现在我无法在发牌时打印原始手牌,或者如果用户没有要求完整的5张牌,因为我的数组将有null对象 解决此问题的最快、最简单和最简单的方法是什么?将打印卡值的行放在检查数组值是否为空的if语句中。比如: for(int i = 0; i < cardArr

我正在编写一个java程序来制作一个简单的21点游戏

我使用一组卡片对象作为用户的手

用户将获得手中的两张牌,但是他们可以要求另一张牌,直到他们达到5张牌的限制

出于这个原因,我制作了5个插槽的卡片对象阵列,以允许将更多的卡片添加到手上

但是现在我无法在发牌时打印原始手牌,或者如果用户没有要求完整的5张牌,因为我的数组将有
null
对象


解决此问题的最快、最简单和最简单的方法是什么?

将打印卡值的行放在检查数组值是否为空的if语句中。比如:

for(int i = 0; i < cardArray.length ; i++)
{
  if(cardArray[i] != null)
      System.out.print(cardArray.value);
}
for(int i=0;i
您知道,无法访问空对象内部的任何内容。在这种情况下,您应该在打印时检查5张卡中的每一张是否为空

在执行任何操作之前检查空值:

if(x[i] == null){
    don't.do.anything();
}else {
    print.something();
}
这些方法显然是假的,但你可以试试这样的方法


但是正如上面的评论所说,你最好使用一个列表。

不要使用数组-使用一个列表,也许是一个数组列表

然后,你可以简单地说:

for (Card card : hand) {
  System.out.println(card);
}

我假设您的Card类有一个toString()方法,“hand”是一个列表

使用一个最大容量为5的列表。我不确定这是否正确,因为hand可能有null元素。我相信我们需要5个元素(有些是空的),根据这个问题……看起来手牌应该只有添加到手牌上的数量——没有必要向列表中添加空项来表示手牌中不存在的牌。