我写了一个方法,目的是计算特定风味的薯片在蓝色小吃机中出现的次数
public int countPacks(String flavour){
int n = 0;
int nrFlavour = 0;
while( n < packets.size()) {
if( packets.get(n).equals(flavour)){
nrFlavour++;
n++;
}
else n++;
}
return nrFlavour;
}
我有一个Arraylist&#39;数据包&#39;它包含具有特定风味的PackOfCrisps对象。然而,当我添加说三包&#34;盐&#34;味道薯片,我运行这种方法,输入&#34;盐&#34;作为风味,它只返回0,好像没有具有风味&#34;盐&#34;的PackOfCrisps对象。 对不起,如果这没有意义。我是Java的新手,我尽力解释我的问题。 :)
答案 0 :(得分:2)
列表packets
包含PackOfCrisps
个对象,该方法采用String
参数。所以语句packets.get(n).equals(flavour)
正在将PackOfCrisps
对象与String
进行比较,因此count变量永远不会增加。
您需要将flavour
字符串与对象的特定字段进行比较,例如:
if(packets.get(n).getFlavour().equals(flavour)){
在旁注中,您可以使用简单的while
循环替换for
循环,并删除n
的增量。
答案 1 :(得分:0)
您的问题有内置解决方案,您可以使用此method
您可以像这样重写countPacks
方法:
public int countPacks(String flavour){
return Collections.frequency(packets, flavour);
}