неправильные типы операндов для бинарного оператора, «<=» не работает, хотя я считаю, что работаю с целыми числами [дубликат]

Dec 27 2020

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

public static void main(String[] args) {
    int N = scanner.nextInt();
    scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
    if(1<=N<=100){
        if(N % 2 != 0){
            System.out.println("Weird");
        } else {
            if(2<=N<=6){
                System.out.println("Not Weird");
            } else if (6<=N<=20){
                System.out.println("Weird");
            } else if(N>=20){
                System.out.println("Not Weird");
            }
        }
    }
    
    scanner.close();
}

Ответы

1 aran Dec 27 2020 at 15:21

Вы не можете сделать это напрямую в Java:

if(1<=N<=100)

Что происходит, так это то, что он сначала вычисляет (1<=N), что возвращает boolean.

Затем он пытается compile ( [boolean]<=100), что не имеет смысла, показывая вам:

The operator <= is undefined for the argument type(s) boolean, int

В твоем случае:

The operator <= is undefined for the argument type(s) [1<=N]boolean, [100]int


Измените все условия, чтобы они соответствовали этой форме:

(min<=number && number<=max)

    int N = scanner.nextInt();
    scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
    if(1<=N && N<=100)
    {
        if(N % 2 != 0)
            System.out.println("Weird");
        else 
        {
            if (2<=N && N<=6)
               System.out.println("Not Weird");
            else if (6<=N && N<=20)
               System.out.println("Weird");
            else if(N>=20)
               System.out.println("Not Weird");
         }
     }