String mins = minsField.getText();
int Mins;
try
{
Mins = Integer.parseInt(mins);
}
catch (NumberFormatException e)
{
Mins = 0;
}
double hours = Mins / 60;
hours.setText(hoursminsfield);
Le problème est que Double cannot be dereferenced
.
double cannot be dereferenced
est l'erreur que certains compilateurs Java donnent lorsque vous essayez d'appeler une méthode sur une primitive. Il me semble que double has no such method
serait plus utile, mais que sais-je?.
D'après votre code, il semble que vous pensiez pouvoir copier une représentation textuelle de hours
dans hoursminfield
en effectuant Hours.setText (hoursminfield); Cela comporte quelques erreurs: 1) heures est une double
qui est un type primitif, il n'y a AUCUNE méthode que vous puissiez appeler. C’est ce qui vous donne l’erreur à propos de laquelle vous avez posé la question. 2) vous ne dites pas quel type est hoursminfield, peut-être que vous ne l’avez même pas encore déclaré. 3) il est inhabituel de définir la valeur d'une variable en ayant l'argument d'une méthode. Cela arrive parfois, mais pas habituellement.
Les lignes de code qui font ce que vous semblez vouloir sont:
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);
Dans double hours = Mins / 60;
, vous divisez deux int
s. Vous obtiendrez la valeur int
de cette division, donc si Minutes = 43; Double heures = minutes/60; // minutes/60 est un entier = 0. assigning le fait de doubler les heures fait que // heures est un double égal à zéro.
Ce que vous devez faire c'est:
double hours = Mins / ((double) 60);
ou quelque chose comme ça, vous devez transformer une partie de votre division en double
afin de forcer la division à se faire avec double
s et non int
s.
Vous n'avez pas spécifié le langage, mais s'il s'agit de Java, il existe une grande différence entre le type de base double
et la classe Double
.
Dans tous les cas, votre setText
semble le mauvais sens. La méthode setText
appartiendrait au champ data, pas aux données que vous essayez d'introduire ici:
hoursminsfield.setText (hours);
En d'autres termes, vous souhaitez définir le texte du champ en utilisant le double que vous venez de calculer. Que vous puissiez réussir un double est une question différente qui peut doit être examinée.
Autre chose:
double hours = Mins / 60;
va, si Mins
est un entier`, vous donner un entier valeur que vous mettez ensuite dans un double. Cela signifie qu'il sera tronqué. Si vous voulez vous assurer de garder la précision après la division, vous pouvez utiliser quelque chose comme:
double hours = (double) Mins / 60.0;
(Bien que cela ne fonctionne qu'avec un seul de ces changements, je préfère expliciter tous les termes).
Que diriez-vous de cette façon
double hours = Mins / 60.0
J'utilise toujours la déclaration ci-dessus pour obtenir la double valeur