Java: несоответствие типов: невозможно преобразовать из NULL в INT - PullRequest
0 голосов
/ 30 января 2020

Я хотел создать метод, который может проверять, совпадают ли два массива (без использования импорта). Порядок не имеет значения, и он может содержать дубликаты, и эти два массива должны оставаться неизменными! Моя идея состояла в том, чтобы скопировать первый массив, а затем сравнить массив копирования со вторым массивом. И если я найду правильную пару, удалите этот элемент из массива копирования, чтобы он мог обрабатывать дубликаты. Но я не могу удалить любой элемент из-за несоответствия типов. Мой код:

Решение. java

public class Solution {

    public static boolean areTheyTheSame(int[] a, int[] b)
    {

        if (a.length == b.length)
        {

            //fill the temp array with the elements of a
            int temp[] = new int[a.length];

            for (int i = 0 ; i < a.length ; i++)
            {
                temp[i] = a[i];
            }

            //check if the temp array and the b array are the same
            for (int i = 0 ; i < a.length ; i++)
            {
                for (int j = 0 ; j < a.length ; j++)
                {
                    if (temp[i] == b[j])
                    {
                        temp[i] = null; // Type mismatch: cannot convert from null to int
                    }
                    else 
                    {
                        return false;
                    }
                }
            }

            return true;

        }
        return false;
    }
}

Тест. java

public class Test {

    public static void main(String[] args) {

        int[] a = new int[]{121, 144, 19, 161, 19, 144, 19, 11};
        int[] b = new int[]{121, 19, 19, 144, 161, 144, 11, 19};

        if (Solution.areTheyTheSame(a, b) == true)
        {
            System.out.println("Equal");
        }
        else 
        {
            System.out.println("Not equal");
        }

    }

}

1 Ответ

2 голосов
/ 30 января 2020

Есть несколько проблем:

Вы используете "примитив" int в вашем массиве. Это не объект, поэтому его нельзя установить равным «null».

Если вы хотите go, используйте «Integer temp [];» (вы можете оставить остальное как int). Java автоматически преобразует между int и Integer, поэтому вам не нужно беспокоиться о преобразовании типов там. Другие примитивы (которые не могут быть «нулевыми») являются логическими, long, double и float.

Вы не сравниваете окончательный временный массив

После установки массива вы не проверяете, все ли равно нулю. После добавления этой дополнительной проверки все должно работать нормально.

...