2015-01-21 3 views
4

Я действительно новичок в java. Я подошел к чему-то, что я действительно не могу опустить. Я понимаю, что Double - это класс-оболочка, и вы можете обернуть двойное значение внутри объекта указанного класса. Поэтому код, выглядящий, как это будет работать нормальноОбертывание двойного [] в двойное []

double pi = 3.14; 
    Double tempVariable = new Double(pi); 

Так что, казалось вполне логичным мне, что так как я могу обернуть двойной двойной, это было бы так же легко обернуть двойной [] к двойному [ ]. Но это не так. Я пробовал все, что мог подумать (синтаксические изменения - создание объекта типа Object, содержащего указанный double [], а затем литье в Double [], касающееся объекта Double, как если бы это был массив), но ни одна из них не работала.

Я использую j2me.

У вас есть предложения?

@MightyPork: Это была первая вещь, которую я пытался do.The кодекс я думаю, пытается сделать это следующим

public Double[] modelWeights = new Double[9]; 
    modelweights = {-1.31,1.39,-0.36,1.55,1.55,-2.03,2.25,2.27,-0.72}; 

Но этого не будут работать. Понятия не имею почему.

@ Abimaran Kugathasan :: Вчера я увидел ArrayUtils, и это было бы отличным решением, но я использую j2me, и классы, такие как List или HashSet (которые требуются для ArrayUtils), не реализованы в j2me. Я что-то упускаю?

EDIT :: Нить, связанная с Abimaran Kugathasan, действительно имела другие ответы довольно близко к ответу fge. Спасибо всем за комментарии.

+0

да, предложение .. сделать массив Double и скопируйте свои парные места там. – MightyPork

+0

Возможный дубликат [Преобразование массива примитивов в массив контейнеров в Java] [1] 1. http://stackoverflow.com/questions/3770289/converting-array-of-primitives-to-array-of-containers-in -java –

+0

Двойной [] doubleles = ArrayUtils.toObject (d); – Lucky

ответ

2

Добро пожаловать в один из исторических багажа Java, массивов.

Что происходит, так же, как и то, что у вас есть примитивные типы double и их «эквивалент класса» Double, и что вы можете использовать его без проблем для другого, потому что (начиная с Java 5) в этом случае компилятор делает бокс/unboxing для вас.

Но это не будет сделано для массивов; поэтому Double[] не является «классом обертки» для double[].

Если у вас есть double[] массив, который вы хотите, чтобы «превратить в» в Double[], у вас нет выбора, кроме как копировать себя ... Например:

final double[] primitiveArray = ...; 

final int len = primitiveArray.length; 

final Double[] boxedArray = new Double[len]; 

for (int index = 0; index < len; index++) 
    boxedArray[index] = Double.valueOf(primitiveArray[index]); 
+0

Да, это решило проблему. Большое спасибо. Это была одна из вещей, которые я пробовал вчера, но без Double.valueOf(). Так что я получил ошибку «double не может быть преобразован в Double». Еще раз спасибо – Silas

Смежные вопросы