2015-08-29 3 views
3

Я пишу часть моей программы, которая считывает данные из txt-файла.Как преобразовать double в объект?

У меня проблема, когда я хочу установить значение JSpinner по setValue (object).

Мои данные двойные, поэтому мне нужно преобразовать их в объект, но как?

LoadData open = new LoadData(); 
data.setFz(open.giveAwayData()); 
spinner_1.setValue(data.getFz()); // Fz is double 
+2

Я только что попробовал, и я могу использовать double в качестве аргумента без каких-либо изменений или конверсий;) – Emd4600

+0

Я заново затмил затмения, и теперь все в порядке. Странная ошибка. – Xalion

+0

К сожалению, это не так странно, как вы думаете. Eclipse имеет тенденцию терять рассудок время от времени, и вы должны перезапустить. Это происходит слишком часто. Вам просто нужно привыкнуть к нему (как и я) или переключиться на IntelliJ (который, как я слышал, немного более стабилен, но я не уверен). – ajb

ответ

3

Попробуйте литья его Double (с капиталом):

spinner_1.setValue((Double) data.getFz()); 
+1

Если это ответ, он не должен заканчиваться вопросительным знаком. :) Кроме того, отображение кода было бы очень полезно. Я думаю, что это правильный ответ, но вам просто нужно немного больше, чтобы сделать его хорошим ответом. – ajb

+0

В идеале это будет комментарий, но я не могу комментировать, но с этим справиться. Но я отредактирую его в отношении ваших предложений. – colouredmirrorball

+0

Я не понимаю, что означает капитал. Дайте код, пожалуйста. – Xalion

2

Вы можете использовать, например, Double конструктор для преобразования double примитивного типа в Double object.

Double dObj = new Double(d); 

или вы можете бросить его удвоить, как это:

spinner_1.setValue((Double)data.getFz()); 
+1

Зачем вам нужен актерский состав? Или явное двойное создание? Autoboxing должен позаботиться об этом правильно ... – Codebender

+0

@Codebender: - Действительно! 'new Double (data.getFz())' отлично. –

+0

множествоValue (объект). Мне нужен объект внутри ... как установить номер ... это должно быть легко. – Xalion

3

Использование Double.valueOf(data.getFz()). Объяснение различий между примитивами и примитивами в коробке можно найти here; в основном, примитивы имеют лучшую производительность, но классы в штучной упаковке существуют, когда вам нужен Object. Общим примером является generics, который не может быть примитивным.

Однако, double может быть передан на что-то требующее Double или один из его суперкласса. Это из-за autoboxing. Да, мне очень нравятся ссылки.

+0

он не работает ... мне нужен OBJECT, а не двойной. это значениеValue (объект) – Xalion

+0

Как я уже сказал, autoboxing должен решить эту проблему для вас. Кроме того, 'Double' является подклассом' Object'. Но вы всегда можете использовать 'Object obj = data.getFz();' (autoboxing позволяет это работать). – bcsb1001

+0

Никогда не используйте 'new Double'. Всегда используйте [Double.valueOf] (https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html#valueOf-double-) вместо этого. – VGR