2015-04-09 3 views
1

Мне нужно сделать программу, которая использует compareTo, но у меня проблемы с ней.Сравнивает ли с двойным типом?

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

Я всегда впадать в ошибку, которая говорит

Cannot invoke compareTo(double) on the primitive type double 

Что я делаю не так, и как это исправить?

ответ

4

Вы не можете вызывать методы примитивных значений, таких как double с. Но вы можете позвонить Double.compare, который будет сравнивать два примитива double s для вас.

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

Вы также можете сравнить примитивно double значения непосредственно с операторами сравнения ==, !=, <, <=, > и >=.

1

double является примитивным типом, а не классом: у него нет метода. Вместо этого вы должны использовать Double ... и проанализировать основы Java. Не быть оскорбительным, но дело в том, что вам нужны основы для эффективной программы.

PS: Вы можете также использовать статический метод Double.compare

2

Простейший тип не является Java-объектом, поэтому метод compareTo не существует. Используйте Java Object Double, а не примитивный тип:

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

Edit - не принимать от того что все Java объекты имеют метод CompareTo (..). CompareTo (..) является частью сравниваемого интерфейса https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html

Смежные вопросы