类型 int、ArrayList 的运算符未定义

我编写了以下代码来对 an 的元素求和ArrayList<Integer>:


import java.util.ArrayList;


public class SumAverage {

    private int sum=0;

    public void getInput(ArrayList li )

    {

        System.out.println("Given elements are "+li);

    }

    public int sumOfElements(ArrayList<Integer> lis)

    {

        sum=sum+lis;

        return sum;

    }

}

但是当我运行它时,出现以下错误:


运算符 + 对于参数类型 int、ArrayList 是未定义的


我究竟做错了什么?


catspeake
浏览 181回答 4
4回答

噜噜哒

您需要遍历List以访问每个Integer并将其添加到总和中:public void sumOfElements(ArrayList<Integer> lis){&nbsp; &nbsp; for (Integer num : lis) {&nbsp; &nbsp; &nbsp; &nbsp; sum = sum + num;&nbsp; //Access each element in the list one at a time and add it to the sum&nbsp; &nbsp; }}您还应该使用 avoid作为返回类型,而不是int因为没有理由返回sum. 它已经可以从类本身访问,因此 return 是多余的。下面是一个关于如何使用这个方法的例子,假设一个标准的 getter 方法:SumAverage sa = new SumAverage();sa.sumOfElements(yourList);int sum = sa.get(sum);&nbsp; //Local variable now contains your class variable

白衣染霜花

因为lis是 anArrayList并且此类型不支持+,所以您需要访问 ArrayList 的位置list.get(x)但你可能想要这个public int sumOfElements(ArrayList<Integer> lis) {&nbsp; &nbsp; &nbsp;int total = 0&nbsp; &nbsp; &nbsp;for(int i = 0; i < lis.size(); i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;total += lis.get(i);&nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp;return total;}

芜湖不芜

你的问题是这段代码。public int sumOfElements(ArrayList<Integer> lis){&nbsp;&nbsp; &nbsp; sum=sum+lis;&nbsp; &nbsp; return sum;}编译器不知道如何将 int 添加到 arrayList。您需要做的是遍历列表中的每个项目,并将总数制成表格。public int sumOfElements(ArrayList<Integer> lis){&nbsp; &nbsp; sum=0; //reset the total&nbsp; &nbsp; for(int i: lis){ //loop through each element in lis&nbsp; &nbsp; &nbsp; &nbsp; sum+=i;&nbsp; &nbsp; }&nbsp; &nbsp; return sum;&nbsp;}为了完整起见,如果您使用流,那么它将是这样的:-(现在不需要担心这个,先掌握 Java 的基础知识)public int sumOfElements(ArrayList<Integer> lis){&nbsp;&nbsp; &nbsp; //it takes each item in lis, and sum them up.&nbsp; &nbsp; sum = IntStream.of(lis).sum();&nbsp; &nbsp; return sum;&nbsp;}也正如 JoshhuaS 所提到的,您的打印文本可能不会返回您所期望的public void getInput(ArrayList li ){&nbsp; &nbsp; System.out.println("Given elements are "+li);}您可以将打印语句拆分为如下内容public void getInput(ArrayList li ){&nbsp; &nbsp; System.out.print ("Given elements are " ); //note it's print instead of println&nbsp; &nbsp; System.out.println(li); //this will print for example [1,2,3,4]}

ITMISS

我假设您期望运算符+将自动应用于lisand中的每个元素li。sum=sum+lis;这不是or的情况"Given elements are "+li。您需要以某种方式迭代ArrayList以完成您想要实现的目标。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java