Java не вернет массив Int

#java #arrays

#java #массивы

Вопрос:

Я работаю над программой, в которой я создаю 2 массива, вставляя 10 случайных чисел в один массив, затем используя copyArray для копирования информации из первого массива во второй, затем возвращая ее и отображая.

 `class C9e5
{
    public static void main(String[] args)
    {
        int[] a = new int[10];
        int[] b = new int[10];
        Random r = new Random();
        for(int i = 0; i < a.length; i  )
        {
           a[i] = r.nextInt();
        }
        copyArray(a, b);
        System.out.println("Array a contains "   a);
        System.out.println("Array b contains "   b);
    }
    public static int copyArray(int[] c, int[] d)
    {
        c = d;
        return c;
        return d;
    }
}`
  

Появляется сообщение об ошибке, в котором постоянно говорится «несовместимые типы: int[] не могут быть преобразованы в int».
Что я делаю не так, и как мне это исправить?


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

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

1. Почему вы возвращаете c и d? измените возвращаемый тип на int[ ] в сигнатуре вашего метода.

Ответ №1:

Чтобы ваша копия массива работала, вам нужно фактически скопировать значения из c в d (поскольку вы не можете обновить ссылку вызывающего абонента).

 public static void copyArray(int[] c, int[] d) {
    for (int i = 0; i < c.length; i  ) {
        d[i] = c[i];
    }
}
  

Или что-то вроде

 public static int[] copyArray(int[] c) {
    return Arrays.copyOf(c, c.length);
}
  

а затем используйте его как

 public static void main(String[] args) {
    int[] a = new int[10];
    Random r = new Random();
    for (int i = 0; i < a.length; i  ) {
        a[i] = r.nextInt();
    }
    int[] b = copyArray(a);
    // Arrays don't override toString...
    System.out.println("Array a contains "   Arrays.toString(a));
    System.out.println("Array b contains "   Arrays.toString(b));
}
  

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

1. Будьте осторожны с первым методом копирования с циклом for. Он не проверяет, что d имеет правильную длину. Это может вызвать исключение или привести к странным результатам.

Ответ №2:

Ваш метод copyArray недействителен. Он пытается вернуть массив int в коде, но сигнатура метода заявляет, что он возвращает обычный int. Также второй возврат недействителен code…it никогда не может быть запущен.