Java 四手交易

Java 四手交易,java,heap-memory,Java,Heap Memory,“发牌四”计划将创建一个洗牌牌组,并从牌组中发出四手13张牌 我在cards[I]=Cardx时不断出现内存不足错误;在第四节课上。我试图通过java-Xmx参数增加最大堆空间。这是行不通的 这是卡片课 package Casino; @SuppressWarnings("unchecked") public class Card extends Object { String[] deck = {"AH", "KH", "QH", "JH", "10H", "9H", "8H", "

“发牌四”计划将创建一个洗牌牌组,并从牌组中发出四手13张牌

我在cards[I]=Cardx时不断出现内存不足错误;在第四节课上。我试图通过java-Xmx参数增加最大堆空间。这是行不通的

这是卡片课

package Casino;

@SuppressWarnings("unchecked")
public class Card extends Object
{
    String[] deck = {"AH", "KH", "QH", "JH", "10H", "9H", "8H", "7H", "6H", "5H", "4H", "3H", "2H",
                     "AS", "KS", "QS", "JS", "10S", "9S", "8S", "7S", "6S", "5S", "4S", "3S", "2S",
                     "AD", "KD", "QD", "JD", "10D", "9D", "8D", "7D", "6D", "5D", "4D", "3D", "2D",
                     "AC", "KC", "QC", "JC", "10C", "9C", "8C", "7C", "6C", "5C", "4C", "3C", "2C"};

    String card;


    public Card(int i)
    {
        card = deck[i];
    }

    public void show()
    {
        System.out.println(card);
    }
}
下面是DealFour类:


您已经创建了一个无限循环:

for (int i = 0; i < 52;) {
  int x = Math.abs(repeater.nextInt(52)); // no need for Math.abs, this
                                          // result is always positive
  if (x < 52) { // note: this if is redundant

    cards[i] = new Card(x);
    if (i == 0) { // <--------------- this is always true
      shuffledDeck.push(cards[i]);
    } else {
      // ...
    }
  }
}
你永远不会增加i,所以循环永远不会结束。唯一的增量操作隐藏在else子句中,它永远不会执行


我怀疑这是家庭作业或自学练习,所以我将避免尝试修复任何其他内容。希望这个提示足以帮助您找到解决方案。

您得到的确切错误是什么?请张贴,包括跟踪。一般来说,您可能正在运行无限循环,因为for循环看起来有些纠结,您应该将它们替换为while循环,因为您将它们用作while循环。另外,您的if检查xside注意:extends对象是不必要的。您创建的每个类都会自动扩展对象;wfor (int i = 0; i < 52;) { int x = Math.abs(repeater.nextInt(52)); // no need for Math.abs, this // result is always positive if (x < 52) { // note: this if is redundant cards[i] = new Card(x); if (i == 0) { // <--------------- this is always true shuffledDeck.push(cards[i]); } else { // ... } } }