【问题标题】:Filling ArrayList with initialized Objects用初始化的对象填充 ArrayList
【发布时间】:2017-05-17 14:18:50
【问题描述】:

我在 Class Deck 中有 ArrayList 卡组。我想用 Card 对象填充 ArrayList。

我还想填充 Card 对象的属性。

我添加了一个 for 循环来查看结果,ArrayList 有 5 个对象,名称为 NULL,值为 0。

(已在主函数中调用了FillDeck)

import java.util.ArrayList;


public class Deck {

    private ArrayList<Card> deck=new ArrayList();


      public Deck(){

    }


      public Deck(ArrayList<Card> deck ){

        this.deck = deck;

    }

          //hearts,spades,diamonds,clubs  
        Card card1 = new Card("A hearts",11,true);
        Card card2 = new Card("2 hearts",2,true);
        Card card3 = new Card("3 hearts",3,true);
        Card card4 = new Card("4 hearts",4,true);    
        Card card5 = new Card("5 hearts",5,true);




    public void filldeck(){





        deck.add(card1);       
        deck.add(card2);       
        deck.add(card3);      
        deck.add(card4);     
        deck.add(card5);       


          for (int i=0; i<deck.size(); i++){

              System.out.println(deck.get(i).getName());
              System.out.println(deck.get(i).getValue());


          }

    }


}




public class Card {


    private String name;
    private int value;
    private boolean samecard = true ;

    public Card(){

    }

    public Card(String name,int value,boolean samecard){

        name = this.name;
        value = this.value;
        samecard = this.samecard;
    }

    public String getName(){

        return name;
    }

    public int getValue(){

        return value;
    }

    public boolean getSamecard(){

        return samecard;
    }
}

【问题讨论】:

  • 你写了一堆(相当懒惰!格式化)代码。还有一些要求。但是你的问题是什么?我们把所有这些都消化到你剩下的家庭作业中了吗?抱歉,如果您有代码问题,请发minimal reproducible example
  • 你应该使用enums 作为一副牌。
  • 伙计,我只是问了一个简单的具体问题。我从来不想解决我的“作业”。如果你不想帮助我,欢迎你不要!
  • 这不是在 Card 类的构造函数中赋值的好方法。反之亦然,朋友。
  • @ParvizMakari 你建议如何将他们分配给我的朋友?

标签: java object arraylist null fill


【解决方案1】:

因为您看到的是字段的默认值。要解决这个问题,您必须实际分配值,例如

public Card(String name,int value,boolean samecard){
    this.name = name;
    this.value = value;
    this.samecard = samecard;
}

【讨论】:

    【解决方案2】:

    您的Card(String name, int value, boolean samecard) 实现错误,您不能将实例变量分配给构造函数参数。

    要明确这是错误的:name = this.name

    这是正确的:this.name = name

    这是一个正确的实现:

        public Card(String name,int value,boolean samecard){
            this.name = name;
            this.value = value;
            this.samecard = samecard;
        }
    

    【讨论】:

      【解决方案3】:

      你搞砸了 Card 类中的构造函数,将构造函数变量赋值更改为:

      this.name = name;
      this.value = value;
      this.samecard = samecard;
      

      【讨论】:

        【解决方案4】:

        你是 qualifying 分配的右侧,在这种情况下不正确:

        public Card(String name,int value,boolean samecard){
        
            name = this.name;
            value = this.value;
            samecard = this.samecard;
        }
        

        应该是

        public Card(String name,int value,boolean samecard){
        
            this.name = name;
            this.value = value;
            this.samecard = samecard;
        }
        

        【讨论】:

          【解决方案5】:

          您的承包商有问题。它看起来像这样:

          public Card(String name,int value,boolean samecard){
              name = this.name;
              value = this.value;
              samecard = this.samecard;
          }
          

          应该是这样的:

          public Card(String name,int value,boolean samecard){
              this.name = name;
              this.value = value;
              this.samecard = samecard;
          }
          

          【讨论】:

            猜你喜欢
            • 2018-06-16
            • 1970-01-01
            • 1970-01-01
            • 2015-05-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-30
            • 2013-06-27
            相关资源
            最近更新 更多