Java ArrayList for-loop lcv被认为是一个对象,而不是一个int
Java ArrayList for-loop lcv thought to be an object, not an int
我正在尝试创建一个具有可变长度序列的数组,所以我决定使用 ArrayList。
因为想求数列的和,所以尝试用ArrayList.get(int index)方法获取ArrayList中某个元素的值,但是NetBeans向我抱怨关于 incompatible types: Object cannot be converted to int
以下代码:
int seqLen = sequence.size(); // number of elements in ArrayList sequence
int seqSum = 0; // sum of all elements in the sequence
for(int i = 0; i <= seqLen; i++) {
int seqPart = sequence.get(i);
seqSum+= seqPart;
}
具体来说,行 int seqPart = sequence.get(i);
我不确定为什么它认为 i
是 object
而不是 int
,并且这段代码对于程序的运行至关重要。
基本上,我在这里做错了什么,我已经检查了 ArrayList 的 JavaDoc 几次,但我仍然没有弄清楚哪里出了问题。
如果您查看 the JavaDoc,您会注意到 get
return 是 E
。如果您不定义 E 是什么,它将默认为 Object。不能将对象分配给 int。像这样定义你的数组列表:
List<Integer> sequence = new ArrayList<>();
这表示,"I'm going to fill this ArrayList with Integers"。这样,当您调用 get()
时,它会 return 一个 Integer
而不是 Object
。
这部分有点高级,不是特别重要,所以如果它超出了您的理解范围,请不要担心:您可以将 Integer
分配给 int
的原因是名为 Auto unboxing 的概念。
我正在尝试创建一个具有可变长度序列的数组,所以我决定使用 ArrayList。
因为想求数列的和,所以尝试用ArrayList.get(int index)方法获取ArrayList中某个元素的值,但是NetBeans向我抱怨关于 incompatible types: Object cannot be converted to int
以下代码:
int seqLen = sequence.size(); // number of elements in ArrayList sequence
int seqSum = 0; // sum of all elements in the sequence
for(int i = 0; i <= seqLen; i++) {
int seqPart = sequence.get(i);
seqSum+= seqPart;
}
具体来说,行 int seqPart = sequence.get(i);
我不确定为什么它认为 i
是 object
而不是 int
,并且这段代码对于程序的运行至关重要。
基本上,我在这里做错了什么,我已经检查了 ArrayList 的 JavaDoc 几次,但我仍然没有弄清楚哪里出了问题。
如果您查看 the JavaDoc,您会注意到 get
return 是 E
。如果您不定义 E 是什么,它将默认为 Object。不能将对象分配给 int。像这样定义你的数组列表:
List<Integer> sequence = new ArrayList<>();
这表示,"I'm going to fill this ArrayList with Integers"。这样,当您调用 get()
时,它会 return 一个 Integer
而不是 Object
。
这部分有点高级,不是特别重要,所以如果它超出了您的理解范围,请不要担心:您可以将 Integer
分配给 int
的原因是名为 Auto unboxing 的概念。