2014-11-04 33 views
0
数组列表中的特定元素

我写了一个方法,目的是计算的次数薯片的特定味道出现在点心机BlueJ提供如何找到的次数发生在Java中

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'数据包',它包含具有特定风味的PackOfCrisps对象。然而,当我添加了三包“盐”味薯片并运行此方法时,输入“盐”作为味道,它只返回0,就好像没有味道“盐”的PackOfCrisps对象。 对不起,如果这没有意义。我对Java很陌生,我试图尽我所能解释我的问题。 :)

+0

请提供完整的** **代码示例说明你在问什么。我们应该能够复制并粘贴它,然后按原样运行它。 (好吧,我们可以随意删除导入语句,因为我们可以很容易地添加这些语句。)当其他人运行您提供的程序时,我们应该完全确定您所问的行为。 – 2014-11-04 17:55:28

+1

数据包是ArrayList 还是ArrayList (或其他类型)?如果它不是'ArrayList ',那么'equals'不会返回true。 (我不知道你的确切代码,但你可以尝试改变if(packets.get(n).equals(flavor)){'to'if(packets.get(n).flavour.equals(flavor)) {'。) – Pokechu22 2014-11-04 17:55:30

+0

显示'数据包'是如何定义和填充的。 – tnw 2014-11-04 17:55:33

回答

2

列表packets包含PackOfCrisps对象,并且该方法采用String参数。因此,语句packets.get(n).equals(flavour)正在比较PackOfCrisps对象与String,因此计数变量永远不会增加。

您需要的flavour字符串比较对象的特定领域,是这样的:

if(packets.get(n).getFlavour().equals(flavour)){ 

在一个侧面说明,你可以用一个简单的for循环更换while环和删除的增量n

0

这里有一个内置的解决您的问题,您可以使用此method

你可以重写你的countPacks方法是这样的:

public int countPacks(String flavour){ 
    return Collections.frequency(packets, flavour); 
} 
相关问题