2012-04-23 3 views
7
String mins = minsField.getText(); 

    int Mins; 
    try 
    { 
     Mins = Integer.parseInt(mins); 

    } 
    catch (NumberFormatException e) 
    { 
     Mins = 0; 
    } 

    double hours = Mins/60; 

    hours.setText(hoursminsfield); 

Проблема в том, что Double cannot be dereferenced.Двойной нельзя разыменовать?

+0

Какой язык это? Javascript? –

+0

Yeh man its java –

+16

java! = Javascript –

ответ

14

EDIT 4/23/12

double cannot be dereferenced это ошибка некоторые компиляторы Java дают при попытке вызвать метод примитивным. Мне кажется, что double has no such method было бы более полезным, но что я знаю.

От вашего кода, вы, кажется, думаете, что вы можете скопировать текстовое представление hours в hoursminfield делая hours.setText (hoursminfield); У этого пользователя есть несколько ошибок: 1) hours is double, который является примитивным типом, здесь нет методов, на которые вы можете позвонить. Это то, что дает вам ошибку, о которой вы просили. 2) вы не говорите, какой тип hoursminfield, может быть, вы еще не объявили его. 3) необычно устанавливать значение переменной, если оно является аргументом метода. Это случается иногда, но не обычно.

Строки коды, которые делают то, что вы, кажется, хотят, является:

String hoursrminfield; // you better declare any variable you are using 

// wrap hours in a Double, then use toString() on that Double 
hoursminfield = Double.valueOf(hours).toString(); 

// or else a different way to wrap in a double using the Double constructor: 
(new Double(hours)).toString(); 

// or else use the very helpful valueOf() method from the class String which will 
// create a string version of any primitive type: 
hoursminfield = String.valueOf(hours); 

оригинального ответа (имя другой проблемы в вашем коде):

В double hours = Mins/60; вы разделяющая два int с. Вы получите значение int этого деления, поэтому, если Mins = 43; двое суток = мин/60; // Mins/60 - это int = 0. Присвоение ему двойных часов составляет // часы, равные нулю.

Что вам нужно сделать, это:

double hours = Mins/((double) 60); 

или что-то подобное, вы должны бросить какую-то часть своего разделения на double, чтобы заставить разделение быть сделано с double с и не int s.

+0

Спасибо, куча брата, работает потрясающе: D <3 –

+0

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

+1

Это замечательно, это правильный ответ, и я получаю downvoted! Может быть, кто-то из вас, обладающий силой, может сказать мне, почему. – mwengler

2

Вы не указали язык, но если это Java, существует большая разница между базовым типом double и классом Double.

В любом случае, ваш setText кажется неправильным. Метод setText будет принадлежать данных поле, не данные, которые вы пытаетесь поставить там:

hoursminsfield.setText (hours); 

Другими словами, вы хотите, чтобы установить текст поля, используя двойной просто рассчитывается. Можете ли вы пройти двойной - это другое дело, которое необходимо изучить. может.

Другое дело:

double hours = Mins/60; 

будет, если Mins является integer`, дают вам значение в целое, которое вы затем положить в два раза. Это означает, что он будет усечен. Если вы хотите, чтобы убедиться, что вы держите точность после разделения, вы можете использовать что-то вроде:

double hours = (double) Mins/60.0; 

(хотя он может работать только с одним из этих изменений, я предпочитаю, чтобы все термины явными).

+0

Да, его java мой плохой, но можете ли вы сказать мне, как я могу исправить это? пожалуйста? lol –

+2

Ухм, они это сделали. вы не можете вызвать 'setText' в Double, потому что Double - это просто номер. У него нет метода 'setText', потому что он не имеет никакого текста ... –

+0

ahh ok Я получаю ya, можете ли вы предложить, что я могу сделать тогда? потому что им очень понравилось это и почти не знаю, что делать –

0

Как об этом способе

double hours = Mins/60.0 

Я всегда использую вышеуказанное заявление, чтобы получить двойное значение