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

Il problema è che Double cannot be dereferenced.Double non può essere dereferenziato?

+0

Che lingua è questa? Javascript? –

+0

Yeh man its java –

+16

java! = Javascript –

risposta

14

EDIT 4/23/12

double cannot be dereferenced è l'errore alcuni compilatori Java danno quando si tenta di chiamare un metodo su un primitivo. Mi sembra che double has no such method sarebbe più utile, ma cosa ne so.

dal codice, sembra che si pensa di poter copiare una rappresentazione testuale di hours in hoursminfield facendo hours.setText (hoursminfield); Questo ha alcuni errori: 1) ore è un double che è un tipo primitivo, non ci sono metodi che è possibile chiamare su di esso. Questo è ciò che ti dà l'errore che hai chiesto. 2) non si dice che tipo di oreminfield è, forse non lo hai ancora dichiarato. 3) è insolito impostare il valore di una variabile facendo in modo che sia l'argomento di un metodo. Succede a volte, ma non di solito.

Le righe di codice che fanno quello che ti sembra di volere sono:

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

RISPOSTA ORIGINALE (affrontato un altro problema nel codice):

In double hours = Mins/60; voi si divide due int s. Otterrai il valore int di tale divisione, quindi se Min. = 43; ore doppie = Min/60; // Mins/60 è un int = 0. assegnandolo a ore doppie fa // ore un doppio uguale a zero.

Quello che dovete fare è:

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

o qualcosa del genere, è necessario lanciare una parte del vostro divisione a un double al fine di costringere la divisione essere fatto con double s e non int S.

+0

Grazie mille fratello, funziona benissimo: D <3 –

+0

Sto mettendo su un altro problema che sto avendo se tu fossi così fantastico da darmi qualche consiglio su aswell, sarebbe molto apprezzato. –

+1

Questo è fantastico, una risposta accettata che è corretta, e sto diventando downvoted! Forse uno di voi utenti esperti di downvoting potrebbe dirmi perché. – mwengler

2

Non hai specificato la lingua ma, se è Java, c'è una grande differenza tra il tipo base double e la classe Double.

In ogni caso, il tuo setText sembra il modo sbagliato. Il metodo setText apparterrebbe ai dati campo, non i dati che si sta cercando di mettere in là:

hoursminsfield.setText (hours); 

In altre parole, si vuole impostare il testo del campo, con il doppio che hai appena calcolato. Se è possibile passare una doppia è un'altra questione che è necessario esaminare .

Un'altra cosa:

double hours = Mins/60; 

sarà, se Mins è un integer` ti fornirà valore intero che si mette poi in un doppio. Ciò significa che sarà troncato. Se si vuole essere sicuri di mantenere la precisione dopo la divisione, si può usare qualcosa come:

double hours = (double) Mins/60.0; 

(anche se può funzionare con un solo di quei cambiamenti, preferisco fare tutti i termini esplicito).

+0

Sì, il suo java è mio male, ma puoi dirmi come posso risolvere Questo? per favore? lol –

+2

Uhm, lo hanno fatto. non puoi chiamare 'setText' su un Double perché un Double è solo un numero. Non ha un metodo 'setText' perché non ha alcun testo ... –

+0

ahh ok ti capisco, puoi suggerire cosa posso fare allora? perché sono abbastanza nuovo in questo e non ho quasi idea di cosa fare –

0

Che ne dite di questo modo

double hours = Mins/60.0 

Io uso sempre la dichiarazione di cui sopra per ottenere il valore doppio

Problemi correlati