Java выдает ошибку: несравнимые типы: boolean и int», хотя оба метода являются логическими?

#java #compare #palindrome

#java #Сравнить #палиндром

Вопрос:

Я пытаюсь закодировать то, что пользователь вводит число n, а программа выводит все числа от 1 до n, которые являются как простыми числами, так и палиндромными числами. Я создал метод для поиска простых чисел, а другой — для определения, является ли число палиндромом. Мой код для вывода целых чисел, которые являются обоими, выглядит так

 if ((prime(y)==true) amp;amp; (pal(y)==n)) {
            System.out.println(y);
        }
 

Вот мой метод поиска простых чисел:

 public static boolean prime(int n) {
    int x = 2;
    while (n%x>0) {
        x =1;
    } if (x==n) {
        return true;
    } else {
        return false;
    }
}
 

Вот мой метод поиска чисел палиндрома:

 public static boolean pal(int n) {
    int rev = 0;
    int rmd = 0;
    while (n>0) {
        rmd = n%10;
        rev = rev*10   rmd;
        n = n/10;
    } if (rev==n) {
        return true;
    } else {
        return false;
    }
}
 

Я получаю сообщение об ошибке, что эти два метода не сопоставимы, потому что, по-видимому, один является логическим, а другой целым числом. Кто-нибудь знает, как это исправить?

Комментарии:

1. Когда вы сравниваете два метода в сравнении secod: if (pal(y) == n) вы сравниваете логическое значение (pal) с целым числом (n)

Ответ №1:

В вашем заявлении говорится pal(y)==n , но pal(y) возвращается логическое значение. Я не уверен, с чем его сравнивать n .

В общем, избегайте таких утверждений, как foo == true . Если это уже логическое значение, просто используйте foo или для false !foo .

Комментарии:

1. О, СПАСИБО, это была просто глупая ошибка с моей стороны