#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 никогда не может быть запущен.