运算符“+”无法应用于'int'和'java.lang.Object'。

3

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

在计算myArray的总和时,我遇到了一个小问题 ------> 错误为运算符“+”不能应用于“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();
    }
}

4
迭代器应该被参数化。Iterator<Integer> myIterator = myArray.iterator(); - vitalh
@vitalh 那就是答案 - 为什么不把它发表为一个答案呢? - rzwitserloot
2
尝试将next()的值提取到变量中。这样会更清楚地说明正在发生什么(提示:您不能将对象添加到整数)。 - Thorbjørn Ravn Andersen
2
你真的想在循环中调用 next() 两次吗?如果输入数量为奇数(就像这个例子),它会崩溃。对于大多数情况,最好只使用 for 循环:for(Integer i: myArray){ - Thilo
1个回答

5

迭代器应该被参数化。如果没有指定Integer类型,编译器会假定为java.lang.Object类型,而此类型不支持+操作符。

Iterator<Integer> myIterator = myArray.iterator(); 

从技术上讲,+ 运算符不适用于除了 String 以外的对象,但是Integer是基本数据类型 int 的一个包装类。因此,在这种情况下,编译器将应用拆箱 获得int,其中定义了 +运算符。

3
通常情况下,您很少需要直接使用Iterator。通常使用for(Integer i: myArray)即可。 - Thilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接