//创建一个名为costOfRecordCollection的方法,该方法将返回ArrayList中所有CD的开销
嗨,我现在对上面的方法感到困惑(java编程新手) - 这是我到目前为止写的,但不知道我是否在正确的轨道上。任何协助/方向赞赏。彼得。
public void setcostofRecordCollection(String cost) {
cost = cost;
}
public int getcostofRecordCollection() {
return cost();
}
答案 0 :(得分:2)
好的,目前你有三个重大问题:
首先,在setter方法中,你有这一行:
cost = cost;
这是一个无操作 - 它不会做任何事情。假设您还有一个名为cost
的实例变量,您需要:
this.cost = cost;
其次,在getter方法中,你有这个:
return cost();
那是试图调用名为cost
的方法,而大概你想要返回变量的值,所以它应该只是:
return cost;
第三,您有不同的类型:您尝试使用String
设置,但随后返回int
。你的意思是什么?
一个较少的立即重大问题是你的名字。它们通常应为getCostOfRecordCollection
和setCostOfRecordCollection
- 至少在资本化方面。我可能会将这些单词重新排序为getRecordCollectionCost
和setRecordCollectionCost
,但这非常小。
答案 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)