我整天都在这里,研究SO和其他地方并尝试我能想到的一切。我现在只用了两个星期的Java,所以我对此非常新,并且完全糊涂了。当我尝试使用ArrayList创建一个长度不确定的稀疏数组时,我不断收到错误(我从用户那里获取输入以确定相应密集数组的长度和密度)。
ArrayList<Double> SparseArray = new ArrayList<Double>[]{
//private ArrayList<ArrayList<Double>> SparseArray;
for (int i = 0; i < DenseArray.length; i++){
if (DenseArray[i] != 0){
SparseArray.add(DenseArray[i]);
我的代码的前两行是我尝试过的两个不同的东西,它们都会出现以下错误:
Multiple markers at this line
- Syntax error, parameterized types are only available if source level is 1.5
or greater
- Syntax error, parameterized types are only available if source level is 1.5
or greater
- Syntax error, insert ";" to complete FieldDeclaration
- Syntax error, insert "ArrayInitializer" to complete
ArrayCreationWithArrayInitializer
(编辑:ArrayInitializer错误是新的,我直到现在才看到。如果这样可以解决我的问题,我该如何使用呢?)
甚至我的“import java.util.ArrayList;”给了我这个:
Multiple markers at this line
- Syntax error on token(s), misplaced
construct(s)
- Syntax error on token ".", = expected
任何想法都会非常感激! :)
编辑:我解决了编译器问题。我仍然无法弄清楚如何让它将DenseArray识别为变量(它在上面的同一个函数中使用,除了它现在将ArrayList视为一个单独的函数)。我来自Python的世界,当这些问题发生时我会默认为全局变量,但我不知道在java中做什么...是否有一个等效的java全局变量或类似的东西?答案 0 :(得分:0)
Java泛型出现在1.5中。这意味着除非使用1.5或更高版本,否则您将无法使用它们。只需升级Java运行时,代码就可以正常编译。
如果您希望在不升级的情况下编译代码(不推荐),那么只需删除泛型。只需删除所有<Double>
,并确保您对类型转换非常小心。
答案 1 :(得分:0)
错误消息
- Syntax error, parameterized types are only available if source level is 1.5 or greater
可能是因为Eclipse中的编译器合规性级别设置不正确。
Menu: Window -> Preferences (at the bottom of the menu)
在弹出窗口中,点击Java
,这会打开一个子列表,点击Compiler
。
在那里,选择“编译器合规级别”以显示1.7(或1.6)。