我的代码出了什么问题?
在主要方法中我这样做:
int [] test=new int[48];
test=etable(Right[]).clone();
我想要的是,'test'数组与'etable'方法的输出完全相同。
我的方法名为'etable':
public static int [] etable(int [] right){
int [] blabla=new int[48];
...
return blabla[]
}
感谢您的建议
答案 0 :(得分:5)
我的代码出了什么问题?
这一行是编译错误:
test = etable(Right[]).clone();
如果right
(或Right
)是变量(使用类型int[]
声明),那么您应该像这样编写方法调用:
test = etable(right).clone();
如果Right
是一种类型,那么这不是创建数组的正确语法。 (从你如何编写etable
方法来判断,你不应该将它传递给新数组。)
第二个问题是这个序列没有意义:
int test[] = new int[48];
test = etable(...).clone();
您正在分配一个包含48个元素的数组......然后通过为test
变量分配不同的数组引用将其丢弃。
第三个问题是clone()
最有可能是多余的。您的etable
方法正在分配一个新数组(在blabla
中)并返回它。然后调用代码复制新数组。除非etable
在某处保存对blabla
数组的引用,否则复制步骤无法实现任何目的。
最后一个问题是,如果Right
确实是变量名,那么这是一种严重的Java样式违规。在Java中,变量名称不应以大写字母开头。
答案 1 :(得分:1)
使用例如Arrays.copy()
:
int[] tmp = etable(whatever);
int[] test = Arrays.copy(tmp, 0, tmp.length);
关于您的原始代码,例如:
test = ebtable(Right[]).clone();
不是合法的Java(无论如何都是Right
。)。