2015-05-20 4 views

ответ

0

Вы только добавить один массив, так это изменить:

double[][] result = Arrays.copyOf(array, array.length + value.length); 

к этому:

double[][] result = Arrays.copyOf(array, array.length + 1); 

Каждый массив является объектом, даже примитивные массивы. Если бы вы добавили System.out.println(result[0].getClass().getSuperClass()); в свой код, он напечатал class java.lang.Object.

Это означает, что каждый элемент «результата» является объектом. Когда вы вызываете Arrays.copyOf и запрашиваете больший массив, все дополнительные элементы имеют значение null (как указано в Arrays.copyOf documentation).

Это означает, что вы не можете легально получить доступ к result[result.length - 1][i], пока не установите result[result.length - 1] на ненулевое значение. В частности, вы хотите установить его в новый двойной массив.

В Java все массивы имеют типизированный общественный клон() метод, так что вы можете сделать прочь с вашим для цикла, а просто позвонить:

result[result.length - 1] = value.clone(); 
+0

вы так много VGR и Bubletan – Stella

0

Вам нужно только добавить один индекс к array, и установите его значение в value. В настоящее время вы пытаетесь добавить двойные значения в массив массивов двойников.

public static double[][] append(double[][] array, double[] value) { 
    array = Arrays.copyOf(array, array.length + 1); 
    array[array.length - 1] = value; 
}