Java 类型int、ArrayList的运算符未定义
我编写了以下代码来对Java 类型int、ArrayList的运算符未定义,java,compiler-errors,Java,Compiler Errors,我编写了以下代码来对ArrayList的元素求和: import java.util.ArrayList; 公共课平均分{ 私有整数和=0; 公共无效getInput(ArrayList li) { System.out.println(“给定元素为“+li”); } 公共元素汇总表(ArrayList lis) { sum=sum+lis; 回报金额; } } 但是当我运行它时,我得到以下错误: 未为参数类型int、ArrayList定义运算符+ 我做错了什么?因为lis是一个ArrayLi
ArrayList
的元素求和:
import java.util.ArrayList;
公共课平均分{
私有整数和=0;
公共无效getInput(ArrayList li)
{
System.out.println(“给定元素为“+li”);
}
公共元素汇总表(ArrayList lis)
{
sum=sum+lis;
回报金额;
}
}
但是当我运行它时,我得到以下错误:
未为参数类型int、ArrayList定义运算符+
我做错了什么?因为
lis
是一个ArrayList
并且该类型不支持+
,所以您需要使用列表访问ArrayList的一个位置。获取(x)
但是你会想要这个吗
public int sumOfElements(ArrayList<Integer> lis) {
int total = 0
for(int i = 0; i < lis.size(); i++){
total += lis.get(i);
}
return total;
}
public int-sumofements(数组列表lis){
整数总计=0
对于(int i=0;i
我假设您希望+
操作符将自动应用于lis
和li
中的每个元素。这不是sum=sum+lis的情况
或“给定元素为”+li
。您需要以某种方式迭代数组列表
,以完成您试图实现的目标。您的问题在于这段代码
public int sumOfElements(ArrayList<Integer> lis)
{
sum=sum+lis;
return sum;
}
您可以将打印语句拆分为如下内容
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]
}
您需要迭代
列表
,以访问每个整数
,并将其添加到总和:
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
}
}
您的问题是“sum=sum+lis”;编译器不知道如何用数组列表添加int。您认为
sum=sum+lis
应该怎么做<代码>+只能在两个数字(加法)或字符串(串联)之间使用。列表没有“添加”操作。“给定元素是”+li
也是一个问题,原因类似-这不会做OP认为它会做的事情(如果它编译的话)。@EJoshuaS,编译时不会出现问题。在内部,编译器只是将其转换为li.toString()是的,我现在不是坐在Java编译器前面。这肯定不会像OP认为的那样,尽管-那里的错误与OP实际询问的错误相似。@EJoshuaS,如果他将其更改为System.out.println(li),那么编译器将打印得很好-例如“[1,2,3,4]”。附加一个字符串,将改为打印类名+十六进制值是的,这就是我所指的。OP可能期望的是[1,2,3,4]
,而不是className+hex值,因此字符串串联不会像OP认为的那样在这种情况下起作用。我假设代码中两个错误背后的推理是相似的(OP可能认为+
运算符将自动应用于整个列表)。“将此运算符应用于每个元素”在Lisp中很容易做到。Java并没有真正设置为能够流畅地完成这项工作。@RobertColumbia numpy也是。
public int sumOfElements(ArrayList<Integer> lis)
{
//it takes each item in lis, and sum them up.
sum = IntStream.of(lis).sum();
return sum;
}
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]
}
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
}
}
SumAverage sa = new SumAverage();
sa.sumOfElements(yourList);
int sum = sa.get(sum); //Local variable now contains your class variable