【发布时间】:2014-12-31 17:33:30
【问题描述】:
我写了一个方法,目的是计算一种特定口味的薯片出现在 blueJ 的零食机中的次数
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 'packets',其中包含具有特定风味的 PackOfCrisps 对象。但是,当我添加了三包“盐”风味薯片并运行此方法时,输入“盐”作为风味,它只返回 0,就好像没有具有风味“盐”的 PackOfCrisps 对象一样。 对不起,如果这没有意义。我对 Java 很陌生,我已经尽力解释我的问题。 :)
【问题讨论】:
-
请提供一个完整代码示例来说明您所询问的内容。我们应该能够复制和粘贴它,然后按原样运行它。 (好吧,请随意省略 import 语句,因为我们可以很容易地添加它们。)当其他人运行您提供的程序时,我们应该得到您所询问的行为。
-
packets是ArrayList<String>还是ArrayList<PackOfCrisps>(或其他类型)?如果不是ArrayList<String>,您将不会让equals返回true。 (我不知道您的确切代码,但您可以尝试将if( packets.get(n).equals(flavour)){更改为if( packets.get(n).flavour.equals(flavour)){。) -
显示如何定义和填充
packets。 -
显示证明您的代码已损坏的代码很重要。添加你设置空包列表的位,添加“salt”三次,然后调用countPacks(“salt”),这样我们就可以看到你是对的。
-
无关,但没有理由在条件中增加
n;无论如何它都会增加。无论如何,如果不知道您实际拥有什么数据,以及flavour实际上是什么,就无法提供帮助。我建议加入一些调试语句。
标签: java arraylist while-loop bluej