Оператор && не может быть применен к 'логическому', 'int - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь переопределить метод equals, но столкнулся с ошибкой «Оператор && не может быть применен к логической ошибке,« int »», которая, кажется, вызвана последней строкой. Я считаю, что pages == otherEntry.pages возвращает int, но почему?


        @Override
         public boolean equals (Object that) {
            if (this == that) return true;
            if (!(that instanceof BookEntry)) return false;

            BookEntry otherEntry = (BookEntry) that;

            return title.equals(otherEntry.title) &&
                    Arrays.equals(authors, otherEntry.authors) &&
                    Float.compare(otherEntry.rating, rating) &&
                    ISBN.equals(otherEntry.ISBN) &&
                    pages == otherEntry.pages;
        }

1 Ответ

2 голосов
/ 29 марта 2020

Float.compare(otherEntry.rating, rating) возвращает int.

Измените его на Float.compare(otherEntry.rating, rating) == 0, если вы хотите определить, равны ли два числа с плавающей точкой в ​​соответствии с порядком, определенным Float.compare().

Оператор возврата станет

        return title.equals(otherEntry.title) &&
                Arrays.equals(authors, otherEntry.authors) &&
                Float.compare(otherEntry.rating, rating) == 0 &&
                ISBN.equals(otherEntry.ISBN) &&
                pages == otherEntry.pages;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...