代码之家  ›  专栏  ›  技术社区  ›  kristheman

返回对象值方法工作不正常

  •  0
  • kristheman  · 技术社区  · 7 年前

    我有一个简单的Java方法,在其中传递自定义对象的数组,并获取它们的值,将它们相加并返回它们。我尝试使用foreach循环和传统循环进行迭代,但它只返回0。

    public static int samletBeløb(ArrayList<Bruger> brugere) {
        int samletBeløb = 0;
        for (int i = 0; i < brugere.size(); i++) {
            Bruger bruger =brugere.get(i);
            int value = bruger.getBeløbGivet();
            value += samletBeløb;
        }
    
        return samletBeløb;
    }
    

    我已经确定了,对象值不是空的,当我调试程序时,它正确地循环通过,但是没有添加值。

    3 回复  |  直到 7 年前
        1
  •  2
  •   Eran    7 年前

    你没有改变 samletBeløb 变量。

    将代码更改为:

    public static int samletBeløb(ArrayList<Bruger> brugere) 
    {
        int samletBeløb = 0;
        for (int i = 0; i < brugere.size(); i++) {
            samletBeløb += brugere.get(i).getBeløbGivet();
        }
    
        return samletBeløb;
    }
    

    顺便说一下,使用Java 8 Stream S可以将此方法简化为一行:

    public static int samletBeløb(ArrayList<Bruger> brugere) 
    {
        return brugere.stream().mapToInt(Bruger::getBeløbGivet).sum();
    }
    
        2
  •  3
  •   sagar varsani    7 年前

    这是因为您没有添加每个 value samletBeløb 变量。 将代码更改为:

    public static int samletBeløb(ArrayList<Bruger> brugere) {
            int samletBeløb = 0;
            for (int i = 0; i < brugere.size(); i++) {
                Bruger bruger =brugere.get(i);
                int value = bruger.getBeløbGivet();
                samletBeløb += value;
            }
    
            return samletBeløb;
    }
    
        3
  •  2
  •   Nikhil    7 年前

    这是因为您正在添加值,但返回的samletbel_ balways初始化为0,所以它始终为0;请尝试以下代码:

    public static int samletBeløb(ArrayList<Bruger> brugere) {
        int value = 0;
        for (int i = 0; i < brugere.size(); i++) {
            Bruger bruger =brugere.get(i);
              value += brugere.get(i).getBeløbGivet();
    
        }
    
        return value;
    }