2013-06-16 3 views
0

что не так с моим кодом?Array Clone не работает

в основном методе я делаю это:

int [] test=new int[48]; 

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

Что я хочу, что «тест» массив точно так же, как и на выход «étable» методы.

мой метод, называемый 'Etable':

public static int [] etable(int [] right){ 
int [] blabla=new int[48]; 
... 
return blabla[] 
} 

Спасибо за ваш посоветуйте

+0

Все не так с вашим кодом. Он не компилируется, и аргумент, передаваемый 'etable()', игнорируется. – darijan

+0

Что не так, даже я не знаю :). На самом деле я не знаю, что ты говоришь. Глядя на код, я не уверен, есть ли опечатки или вы не получаете желаемый результат. В чем проблема? – zerocool

+0

Настоящая проблема (с моей точки зрения) заключается в том, что вы неправильно объяснили, что должен делать код *. Если вы этого не сделаете, мы не можем сказать вам, как это сделать *. (ОК ... так что, возможно, это просто искусственный пример.Но в таком случае, зачем вообще беспокоиться о вещах о 'etable' и т. Д.? Это только делает вопрос излишне длинным и запутанным !!) –

ответ

5

what is wrong with my code?

Эта линия ошибка компиляции:

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 имя переменной НЕ должно начинаться с буквы верхнего регистра.

+0

Спасибо, вот и все :) –

1

использования, например Arrays.copy():

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

Как к исходному коду, это, например:

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

не является законным Java (что равно Right?).