运算符“+”不能应用于“int”、“java.lang.Object”

wae*_*adi 2 java arraylist

我刚刚开始学习如何操作数组列表。

我在计算myArray的总和时遇到了一个小问题 ------> 错误是Operator '+' cannot be applied to 'int', 'java.lang.Object'

public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
    ArrayList<Integer> myArray  = new ArrayList<Integer>();
    myArray.add(6);
    myArray.add(2);
    myArray.add(1);
    int x = 0;
    Iterator myIterator = myArray.iterator();
    while (myIterator.hasNext()){
        System.out.println(myIterator.next());
        x = x + myIterator.next();
    }
}
Run Code Online (Sandbox Code Playgroud)

vit*_*alh 5

迭代器应该被参数化。在不指定Integer类型的情况下,编译器会假定未应用java.lang.Object运算符的类型+

Iterator<Integer> myIterator = myArray.iterator(); 
Run Code Online (Sandbox Code Playgroud)

从技术上讲,该+运算符不适用于 以外的对象String,但它Integer是原始类型的包装类int。因此,在这种情况下,编译器将拆箱应用于 get int,其中+定义了运算符。

  • 而且你很少需要直接使用“Iterator”。通常“for(Integer i: myArray)”就可以了。 (3认同)