В консоль получаю [I@50040f0c, вместо массива - Java
Code:
public static void main(String[] args) {
int[] arrayResult = readArray();
System.out.print(arrayResult);
}
public static int[] readArray () {
int [] arr;
int n;
Scanner in = new Scanner(System.in);
n = in.nextInt();
arr = new int[n];
for (int i = 0; i < n; i++)
arr[i] = in.nextInt();
return arr;
}
Ответы (3 шт):
Автор решения: Igor
→ Ссылка
Функция сама ничего "не показывает в консоле". Чтобы вывести что-то в консоль, надо написать для этого код.
int[] result = readArray();
// output result ...
for (int r : result) {
System.out.println(r);
}
Автор решения: Vadik
→ Ссылка
Чтобы понять, откуда берется [I@50040f0c, заглянем в реализацию метода print(). Там вы увидите что-то вроде:
public void print(Object obj) {
this.write(obj == null ? "null" : obj.toString());
}
То есть, когда мы делаем print(array), под капотом вызывается array.toString().
Теперь глянем, что делает метод toString():
public String toString() {
return this.getClass().getName() + "@" + Integer.toHexString(this.hashCode());
}
Получается, что при распечатывании массивов с помощью print() мы на самом деле распечатываем не содержимое этого массива, а нечто, что называется хэш-кодом объекта.
Чтобы распечатать содержимое массива, используйте хелпер Arrays.toString():
System.out.print(Arrays.toString(array))