Java 元素之和ArrayList
我是一名Java初学者,正在尝试获取ArrayList中所有元素的总和。我正在使用一种方法进行此操作,并在该方法中得到以下错误: 二进制运算符“+”的操作数类型错误第一种类型:int,second 类型:对象“ 我不知道我做错了什么,谢谢你的帮助Java 元素之和ArrayList,java,arraylist,methods,Java,Arraylist,Methods,我是一名Java初学者,正在尝试获取ArrayList中所有元素的总和。我正在使用一种方法进行此操作,并在该方法中得到以下错误: 二进制运算符“+”的操作数类型错误第一种类型:int,second 类型:对象“ 我不知道我做错了什么,谢谢你的帮助 public static int sumNumbers(ArrayList numbers){ int sum = 0; for(int i = 0; i<numbers.size(); i++){ sum+=n
public static int sumNumbers(ArrayList numbers){
int sum = 0;
for(int i = 0; i<numbers.size(); i++){
sum+=numbers.get(i);
}
return sum;
}
publicstaticintsumnumbers(arraylistnumbers){
整数和=0;
对于(int i=0;i将numbers
声明为arraylistnumbers
)。
然后,整数
将被取消绑定到int
。现在,您的数组列表
包含的对象可能不是int
s
目前,numbers.get()
将返回一个对象
,您不能将对象
直接添加到int
中
您始终可以将元素强制转换为整数
,但我建议使用第一个选项。将数字
声明为数组列表数字
。
然后,整数
将被取消绑定到int
。现在,您的数组列表
包含的对象可能不是int
s
目前,numbers.get()
将返回一个对象
,您不能将对象
直接添加到int
中
您可以始终将元素强制转换为整数,但我建议您选择第一个选项。这很好
import java.util.ArrayList;
public static int sumNumbers(ArrayList<Integer> numbers){
int sum = 0;
for(int i = 0; i<numbers.size(); i++){
sum+=numbers.get(i);
}
return sum;
}
import java.util.ArrayList;
公共静态int-sumNumber(数组列表编号){
整数和=0;
对于(int i=0;in).sum();
}
这可以正常工作
import java.util.ArrayList;
public static int sumNumbers(ArrayList<Integer> numbers){
int sum = 0;
for(int i = 0; i<numbers.size(); i++){
sum+=numbers.get(i);
}
return sum;
}
import java.util.ArrayList;
公共静态int-sumNumber(数组列表编号){
整数和=0;
对于(int i=0;in).sum();
}
//创建一个列表
List ints=Arrays.asList(1,2,3);
//获取列表中元素的总和
int sum=MathUtils.sum(int);
//创建一个列表
List ints=Arrays.asList(1,2,3);
//获取列表中元素的总和
int sum=MathUtils.sum(int);
正如其他人所指出的,您需要为您的ArrayList
提供一个类型。然后,您可以使用本机流使代码更加紧凑:
ArrayList<Integer> numbers = ... ;
numbers.stream().mapToInt(i -> i).sum();
arraylistnumber=;
numbers.stream().mapToInt(i->i.sum();
正如其他人所指出的,您需要为您的ArrayList
提供一个类型。然后,您可以使用本机流使代码更加紧凑:
ArrayList<Integer> numbers = ... ;
numbers.stream().mapToInt(i -> i).sum();
arraylistnumber=;
numbers.stream().mapToInt(i->i.sum();
ArrayList numbers
应该是ArrayList numbers
,类型缺失。ArrayList
只与ArrayList
基本相同(不完全相同,但在您的问题上下文中,您可以这样想)。因此在sum+=numbers.get(i)
编译器将操作视为int=int+Object
。如果将其更改为ArrayList
(或者更好的列表
)编译器将看到int=int+Integer
,可以应用自动取消装箱来获取int=int+int
。或者您必须显式地将其强制转换为int@NicholasK您不能将Integer
对象强制转换为int
,您需要将其取消装箱,例如通过Integer.intValue()
或让编译器为您执行此操作。您可以强制转换它,然后调用.intValue()
ArrayList number
应该是ArrayList number
,类型丢失。ArrayList
仅与ArrayList
基本相同(不完全相同,但在您的问题上下文中,您可以这样想)因此,在sum+=numbers.get(i);
中,编译器将操作视为int=int+Object
。如果将其更改为ArrayList
(或者更好的List
)编译器将看到int=int+Integer
,可以应用自动取消装箱来获取int=int+int
。或者您必须显式地将其强制转换为int@NicholasK您不能将Integer
对象强制转换为int
,您需要将其取消装箱,例如通过Integer.intValue()
或让编译器为您执行此操作。您可以强制转换它,然后调用.intValue()