尝试在 java 中创建纸牌游戏“UNO”。当玩家打出一张牌时,应将其从手中移走,而其他元素则向左移动。它以一个 int n 作为参数,它指的是被丢弃的卡片。该方法应该更改我指定为类字段的卡片数组。它是一组对象,即卡片或玩家手牌。运行时,它会产生一个 nullPointerException。我知道为什么会发生错误,我只是不知道如何解决它。我也试图避免使用数组列表。它还会返回被丢弃的卡片,以便打印。谢谢。
public Card removeCardFromHand(int n)
{
Card c = cards[n];
Card[] tempCards = new Card[cards.length - 1];
for(int i = 0; i < n; i++)
{
tempCards[i] = cards[i];
}
for(int i = n; i < cards.length; i--)
{
tempCards[n] = cards[n + 1];
}
cards = tempCards;
return c;
}
错误代码:
java.lang.ArrayIndexOutOfBoundsException:7
at Player.removeCardFromHand(Player.java:86)
at BUno.executeOnePlay(BUno.java:112)
at BUno.play(BUno.java:70)
at BUno.main(BUno.java:186)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:271)
这是因为,在这种情况下,玩家有 7 张牌。当第 7 个被删除时,第 7 个索引为空。当玩家必须抽一张牌时,我写了一个类似的方法来添加一张牌,它完美无缺。我正在为即将到来的考试练习,该考试不包括数组列表或向量,因此对我来说使用它们是没有用的。