2015-04-09 1 views
1

Je dois faire un programme qui utilise compareTo, mais je rencontre des problèmes avec celui-ci.Est-ce que compareTo fonctionne avec un type double?

double sides1 = 1.0; 
double sides2 = 1.3; 
int compared = sides1.compareTo(sides2); 

J'ai toujours couru dans une erreur qui dit

Cannot invoke compareTo(double) on the primitive type double 

Qu'est-ce que je fais mal, et comment puis-je résoudre ce problème?

Répondre

4

Vous ne pouvez pas appeler des méthodes sur les valeurs primitives telles que double s. Mais vous pouvez appeler Double.compare, qui va comparer deux double s primitifs pour vous.

int compared = Double.compare(sides1, sides2); 

Vous pouvez également comparer double primitive des valeurs directement avec les opérateurs de comparaison ==, !=, <, <=, > et >=.

1

double est un type primitif, pas une classe: il n'a pas de méthode. Vous devriez utiliser Double à la place ... et passer en revue les bases dans Java. Ne pas être offensant, mais la chose est que vous avez besoin des bases pour programmer efficacement.

PS: vous pouvez également utiliser la méthode statique Double.compare

2

Un type primitif n'est pas un objet Java et donc la méthode compareTo n'existe pas. Utilisez l'objet Java Double et non le type primitif:

Double sides1 = Double.valueOf(1.0); 
Double sides2 = Double.valueOf(1.3); 
int compared = sides1.compareTo(sides2); 

Edit - ne prenez pas de ce que tous les objets Java ont la méthode compareTo (..). Le compareTo (..) fait partie de l'interface comparable https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html