2012-04-23 11 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); 

Problem polega na tym, że Double cannot be dereferenced.Podwójne nie można odrzucić?

+0

Co to za język? JavaScript? –

+0

Yeh mężczyzna jej java –

+16

Java! = Javascript –

Odpowiedz

14

EDIT 4/23/12

double cannot be dereferenced jest błąd niektóre kompilatory Java dać podczas próby wywołania metody na prymitywne. Wydaje mi się, że double has no such method byłaby bardziej pomocna, ale co ja wiem.

Wygląda na to, że możesz skopiować tekstową reprezentację hours do hoursminfield wykonując hours.setText (hoursminfield); Ma to kilka błędów: 1) godziny to double, który jest typem pierwotnym, nie ma żadnych metod, które można wywołać. Oto, co daje błąd, o który pytałeś. 2) nie mówisz, jaki typ jest hoursminfield, może jeszcze go nie zadeklarowałeś. 3) Nietypowe jest ustawienie wartości zmiennej, ponieważ jest ona argumentem metody. Zdarza się to czasami, ale zazwyczaj nie.

Linie kodu, które robią to, co wydaje się chcieć to:

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); 

ORIGINAL ODPOWIEDŹ (skierowana inny problem w kodzie):

W double hours = Mins/60; jesteś dzielącej dwa int s. Otrzymasz wartość int tego podziału, więc jeśli min = 43; podwójne godziny = min/60; // Mins/60 to int = 0. przypisanie go do podwójnej godziny powoduje, że // godziny są podwójne równe zeru.

Co trzeba zrobić, to:

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

czy coś takiego, trzeba oddać jakąś część swojej dywizji do double w celu zmuszenia podział być zrobione z double si nie int s.

+0

Dzięki heaps bro, działa niesamowicie: D <3 –

+0

Załatwiłem inny problem, który mam, jeśli byłbyś tak wspaniały, by dać mi jakąś poradę na temat, byłoby bardzo docenione. –

+1

To jest świetna, zaakceptowana odpowiedź, która jest poprawna, i otrzymuję obniżoną ocenę! Może jeden z was, którzy pomagają użytkownikom, może mi powiedzieć, dlaczego. – mwengler

2

Nie podano języka, ale jeśli jest to Java, istnieje duża różnica między podstawowym typem double a klasą Double.

W każdym przypadku Twój setText wydaje się być niewłaściwy. Metoda setText należałyby do polu danych, nie dane starasz się umieścić tam:

hoursminsfield.setText (hours); 

Innymi słowy, chcesz ustawić tekst tej dziedzinie, stosując podwójne po prostu obliczony. Niezależnie od tego, czy można przekazać podwójne, to inna sprawa, którą należy zbadać pod kątem .

Kolejna rzecz:

double hours = Mins/60; 

będzie, jeśli Mins jest integer`, daje całkowitą wartości które następnie umieszcza się w podwójnie. Oznacza to, że zostanie obcięty. Jeśli chcesz, aby zapewnić utrzymanie precyzji wyniku podziału, można użyć coś takiego:

double hours = (double) Mins/60.0; 

(choć może pracować tylko jedna z tych zmian, wolę, aby wszystkie terminy jednoznaczne).

+0

Tak jej java mój zły, ale możesz mi powiedzieć jak mogę naprawić to? Proszę? lol –

+2

Uhm, zrobili to. nie możesz wywołać 'setText' na Double, ponieważ Double to tylko liczba. Nie ma metody 'setText', ponieważ nie ma ona żadnego tekstu ... –

+0

ahh ok, rozumiem, co możesz zrobić? bo jestem w tym całkiem nowy i prawie nie mam pojęcia, co robić –

0

Jak o tym sposób

double hours = Mins/60.0 

zawsze użyć powyższego komunikatu, aby uzyskać wartość podwójną

Powiązane problemy