Java-массивы распечатывают странные числа и текст

java arrays text numbers

45051 просмотра

10 ответа

Я новичок в программировании. Я уверен, что ответ на этот вопрос там, но я понятия не имею, что искать.

Хорошо, я пойду прямо к этому.

Вот мой код:

int[] arr;
arr = new int[5];

arr[0] = 20;
arr[1] = 50;
arr[2] = 40;
arr[3] = 60;
arr[4] = 100;

System.out.println(arr);

Это компилируется и работает нормально. Это просто вывод из CMD, от которого у меня кружится голова.

Это выход: [I@3e25a5.

Я хочу, чтобы вывод представлял те же самые числа из списка ( arr) вместо этого. Как мне это сделать?

Автор: Racket Источник Размещён: 12.11.2019 09:51

Ответы (10)


22 плюса

У каждого объекта есть toString()метод, и метод по умолчанию - это отображение представления имени класса объекта, @за которым следует его хэш-код. Итак, вы видите toString()представление intмассива по умолчанию . Чтобы распечатать данные в массиве, вы можете использовать:

System.out.println(java.util.Arrays.toString(arr));

Или вы можете перебирать массив с помощью forцикла, как другие опубликовали в этой теме.

Автор: Hovercraft Full Of Eels Размещён: 18.12.2010 07:25

5 плюса

Это строковое представление массива по умолчанию (странный текст).

Вы просто должны пройти через это:

for(int i : arr){
System.out.println(i);
}
Автор: Goran Jovic Размещён: 18.12.2010 07:24

5 плюса

Для печати значений используйте.

for(int i=0; i<arr.length; i++)
   System.out.println(arr[i]);
Автор: Enrique Размещён: 18.12.2010 07:25

5 плюса

System.out.println(Arrays.toString(arr));

Токовый выход есть classtype@hashcode.

Если вам нужно распечатать массивы с использованием более одного измерения:

Arrays.deepToString(arr);

Также не забудьте переопределитьtoString() метод для пользовательских классов, чтобы получить представление объекта по вашему выбору, а не представление по умолчанию, котороеclasstype@hashcode

Автор: Emil Размещён: 18.12.2010 07:25

4 плюса

Он печатает метод .toString (), вы должны печатать каждый элемент

for(int i=0; i<arr.length; i++) {
   System.out.println(arr[i]);
}

or

for(Integer i : arr) {
  System.out.println(i);
}
Автор: user547215 Размещён: 18.12.2010 07:30

4 плюса

Кстати, вы можете написать

int[] arr = { 20, 40, 60, 40, 60, 100 };
System.out.println(Arrays.toString(array));

или даже

System.out.println(Arrays.toString(new int[] { 20, 40, 60, 40, 60, 100 }));

или же

System.out.println(Arrays.asList(20, 40, 60, 40, 60, 100));
Автор: Peter Lawrey Размещён: 18.12.2010 07:34

3 плюса

Нравится:

for (int i = 0; i < arr.length; ++i)
{
    System.out.println(arr[i]);
}

Это «странное число» является ссылкой на массив, который вы распечатали. Это поведение по умолчанию, встроенное в метод java.lang.Object toString ().

Вы должны переопределить его в ваших собственных объектах, если видения ссылки недостаточно.

Автор: duffymo Размещён: 18.12.2010 07:25

3 плюса

for (int i = 0; i < arr.length; ++i)
{
  System.out.println(arr[i]);
}
Автор: Oswald Размещён: 18.12.2010 07:26

2 плюса

Моя версия короче!

Используйте Arrays.toString () и PrintStream.printf (формат строки, объект ... аргументы) .

System.out.printf("%s%n", Arrays.toString(arr));
Автор: Anton Dozortsev Размещён: 31.12.2013 11:58

-3 плюса

Вы напечатали ссылку, а не значения в ссылке ... Однажды все станет ясно с C.

Автор: EnabrenTane Размещён: 18.12.2010 07:26
Вопросы из категории :
32x32