0

我的代码有什么问题?

在我这样做的主要方法中:

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[]
}

感谢您的意见

4

2 回答 2

5

我的代码有什么问题?

这一行是编译错误:

    test = etable(Right[]).clone();

如果right(or Right) 是一个变量(用 type 声明int[]),那么你应该像这样编写方法调用:

    test = etable(right).clone();

如果Right是一个类型,那么这不是创建数组的正确语法。(并且从您编写该etable方法的方式来看,您不应该将新数组传递给它。)

第二个问题是这个序列没有意义:

    int test[] = new int[48];
    test = etable(...).clone();

test您正在分配一个由 48 个元素组成的数组……然后通过为变量分配不同的数组引用将其丢弃。

第三个问题是clone()无论如何很可能是多余的。您的etable方法正在分配一个新数组 (in blabla) 并返回它。然后调用代码复制新数组。除非在某处etable保存对blabla数组的引用,否则复制步骤不会实现任何目标。

最后一个问题是,如果Right真的是一个变量名,那么这是一个严重的 Java 风格违规。在 Java 中,变量名不应以大写字母开头。

于 2013-06-16T11:16:44.777 回答
1

使用例如Arrays.copy()

int[] tmp = etable(whatever);
int[] test = Arrays.copy(tmp, 0, tmp.length);

至于您的原始代码,例如:

test = ebtable(Right[]).clone();

不是合法的Java(Right无论如何是什么?)。

于 2013-06-16T11:16:13.563 回答