为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

catspeake 2023-05-10 14:21:58
我编写了以下代码来对 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 是未定义的我究竟做错了什么?
查看完整描述

4 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

您需要遍历List以访问每个Integer并将其添加到总和中:


public void sumOfElements(ArrayList<Integer> lis)

{

    for (Integer num : lis) {

        sum = sum + num;  //Access each element in the list one at a time and add it to the sum

    }

}

您还应该使用 avoid作为返回类型,而不是int因为没有理由返回sum. 它已经可以从类本身访问,因此 return 是多余的。


下面是一个关于如何使用这个方法的例子,假设一个标准的 getter 方法:


SumAverage sa = new SumAverage();

sa.sumOfElements(yourList);

int sum = sa.get(sum);  //Local variable now contains your class variable


查看完整回答
反对 回复 2023-05-10
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

因为lis是 anArrayList并且此类型不支持+,所以您需要访问 ArrayList 的位置list.get(x)


但你可能想要这个


public int sumOfElements(ArrayList<Integer> lis) {

     int total = 0

     for(int i = 0; i < lis.size(); i++){

         total += lis.get(i);

     }

     return total;

}


查看完整回答
反对 回复 2023-05-10
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

你的问题是这段代码。


public int sumOfElements(ArrayList<Integer> lis)

    sum=sum+lis;

    return sum;

}

编译器不知道如何将 int 添加到 arrayList。


您需要做的是遍历列表中的每个项目,并将总数制成表格。


public int sumOfElements(ArrayList<Integer> lis)

{

    sum=0; //reset the total

    for(int i: lis){ //loop through each element in lis

        sum+=i;

    }

    return sum;

 }

为了完整起见,如果您使用流,那么它将是这样的:-(现在不需要担心这个,先掌握 Java 的基础知识)


public int sumOfElements(ArrayList<Integer> lis)

    //it takes each item in lis, and sum them up.

    sum = IntStream.of(lis).sum();

    return sum;

 }

也正如 JoshhuaS 所提到的,您的打印文本可能不会返回您所期望的


public void getInput(ArrayList li )

{

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

}

您可以将打印语句拆分为如下内容


public void getInput(ArrayList li )

{

    System.out.print ("Given elements are " ); //note it's print instead of println

    System.out.println(li); //this will print for example [1,2,3,4]

}


查看完整回答
反对 回复 2023-05-10
?
ITMISS

TA贡献1871条经验 获得超8个赞

我假设您期望运算符+将自动应用于lisand中的每个元素lisum=sum+lis;这不是or的情况"Given elements are "+li。您需要以某种方式迭代ArrayList以完成您想要实现的目标。



查看完整回答
反对 回复 2023-05-10
  • 4 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信