If-оператор с int: Java считает, что я хочу преобразовать в логическое значение - PullRequest
0 голосов
/ 13 февраля 2020

Я пишу метод в классе, который извлекает массив и заданное значение из main. Цель состоит в том, чтобы найти позицию этого заданного значения и вернуть его в main (если значение не существует в массиве, оно возвращает -1). К моей проблеме: при запуске мой код Java говорит: int не может быть преобразован в логическое значение. И указывает мне на оператор if в коде ниже. Я попытался переключить знак «=» на «> =», и тогда он работает гладко (но тогда он не работает, как положено ...). Может кто-нибудь понять, почему он думает, что я хочу преобразовать его в логическое значение?

    public static int containsIntElement(int[] A, int val)
    {
        int pos = -1;
        for (int i = 0; i < 10; i++)
        {
            if(A[i] = val)
            {
                pos = i;
            }
        }
        return pos;
    }

Ответы [ 3 ]

5 голосов
/ 13 февраля 2020

Правильный способ вычисления двух int s - ==, а не =:

public static int containsIntElement(int[] A, int val)
    {
        int pos = -1;
        for (int i = 0; i < 10; i++)
        {
            if(A[i] == val)   //Note this
            {
                pos = i;
            }
        }
        return pos;
    }

Оператор = предназначен для назначений, поэтому в

if(A[i] = val) 

Вы присваиваете значение val переменной A[i], которая не является условием

1 голос
/ 13 февраля 2020

Обратите внимание на мелкие детали

if(A[i] = val) // is incorrect .. in some programming language it is correct. but boy o boy it would make you cry.
if(A[i] == val) // is correct. 
0 голосов
/ 13 февраля 2020

Вы используете = (оператор присваивания), где вы намеревались использовать == (оператор сравнения).

Что вы делаете, если: Назначьте val на A[i], затем попробуйте ( и не удается) сделать логическое значение из A[i]

(соглашения об именах также говорят, что A должно быть в нижнем регистре)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...