JAva初学者在编写获取成本的方法时遇到了麻烦

时间:2010-10-26 13:26:02

标签: java

//创建一个名为costOfRecordCollection的方法,该方法将返回ArrayList中所有CD的开销

嗨,我现在对上面的方法感到困惑(java编程新手) - 这是我到目前为止写的,但不知道我是否在正确的轨道上。任何协助/方向赞赏。彼得。

public void setcostofRecordCollection(String cost) {
    cost = cost;
}

public int getcostofRecordCollection() {
    return cost();
}

8 个答案:

答案 0 :(得分:2)

好的,目前你有三个重大问题:

首先,在setter方法中,你有这一行:

cost = cost;

这是一个无操作 - 它不会做任何事情。假设您有一个名为cost的实例变量,您需要:

this.cost = cost;

其次,在getter方法中,你有这个:

return cost();

那是试图调用名为cost的方法,而大概你想要返回变量的值,所以它应该只是:

return cost;

第三,您有不同的类型:您尝试使用String设置,但随后返回int。你的意思是什么?

一个较少的立即重大问题是你的名字。它们通常应为getCostOfRecordCollectionsetCostOfRecordCollection - 至少在资本化方面。我可能会将这些单词重新排序为getRecordCollectionCostsetRecordCollectionCost,但这非常小。

答案 1 :(得分:1)

根据您的说明,您的RecordCollection课程中应包含ArrayList个CD。您希望循环遍历列表中的每个元素,并保持每张CD的总成本。你可以用for循环来做到这一点。

ArrayList<CD> records; // instantiating this is up to you

public double getcostofRecordCollection() {
     double cost = 0.0;

     for(CD record : records) {
         cost = cost + record.getCost();
     }

     return cost;
}

正如您所看到的,还有很多事要做。您需要做的主要事情是实例化ArrayList并定义CD是什么。 CD类(或任何记录)应该具有getCost方法,以便您可以返回集合中每条记录的成本。我怀疑这是作业,所以你应该回顾一下你的作业(或其中一个答案),了解这些细节。

答案 2 :(得分:1)

这听起来像是一个家庭作业问题,所以我不会给你代码,只是对它应该做的一般概念。

您需要一个ArrayList来存储价格列表。该函数应遍历该列表中的每张CD,并将其成本添加到总计中。然后返回总值。

答案 3 :(得分:1)

  

...将返回ArrayList中所有CD的成本

这表明一些类似于这个的数据结构(如果我们坚持使用整数来表示成本,BigInteger / BigDecimal或类似的东西在这里会更通用):


class Cd {
  private int cost = 0;
  public int getCost() {
    return this.cost;
  }
  public void setCost(int cost){
    this.cost = cost;
  }
}

鉴于所请求的方法应该处理Cds的ArrayList,你的签名应该看起来像这样:

public int costOfRecordCollection(ArrayList collection)

现在你所要做的就是遍历那个集合并创造所有成本的总和。

如果你有自己的RecordCollection实现,上面提到的方法也可以没有它的参数,只是操作实例变量。

答案 4 :(得分:0)

这可能就是你想要的。这符合规则,您通常应该将类的字段设为私有(在本例中为“cost”)。并提供getter和setter功能,以便从“外部”访问它。我希望能告诉你足够的。

public class RecordCollection{

   private int cost = 100;

   public RecordCollection() {

   }

   public void setCost(int cost) {this.cost = cost;}
   public int getCost() {return this.cost;}
}

答案 5 :(得分:0)

我建议不使用像Array List这样的Concrete类型,而是使用类型的接口 - 然后你可以使用任何具体类型来实例化。 例: 列表记录= ArrayList()... 或任何支持列表界面的集合。 另外,你现在正在创建一个对具体类的硬依赖。

答案 6 :(得分:0)

你的代码没用,扔掉它。这是让你入门的东西。

一个名为record的类:

public class Record{

    private final String name;
    private final String artist;
    private final int cost;

    public String getName(){
        return name;
    }

    public String getArtist(){
        return artist;
    }

    public int getCost(){
        return cost;
    }

    public Record(final String name, final String artist, final int cost){
        super();
        this.name = name;
        this.artist = artist;
        this.cost = cost;
    }

}

计算记录集合成本的方法(不,这不应该使用int,但是我必须留下一些工作要做):

public static int calculateCostOfRecordCollection(
    final Collection<Record> records){
    int cost = 0;
    for(final Record record : records){
        cost += record.getCost();
    }
    return cost;
}

还有一些测试代码:

public static void main(final String[] args){
    final Collection<Record> records =
        Arrays.asList(
            new Record("The Beatles", "White Album", 25),
            new Record("Roxy Music", "Stranded", 27),
            new Record("Bjork", "Debut", 25),
            new Record("David Bowie", "ChangesBowie", 39)
        );
    System.out.println(calculateCostOfRecordCollection(records));
}

输出:

  

116

答案 7 :(得分:0)

这听起来像是家庭作业,而你是编码的新手,所以试着打破原来的陈述

  

创建一个名为的方法    costOfRecordCollection 即可   返回所有 CD中的费用   ArrayList的

您需要创建一个ArrayList,它会将您的CD存储在课堂内。由于Arraylist将存储cds的成本,因此您很可能将ArrayList实例化为double。

接下来你的方法costOfRecordCollection,需要计算列表中所有cd的成本,你需要{Array}中所有记录的loop。保持计算以确定运行总量。

然后,您可以返回此计算值以确定您的解决方案