Java-массивы печатают странные цифры и текст
Я новичок в программировании. Я уверен, что ответ на этот вопрос есть, но я понятия не имею, что искать.
Хорошо, я пойду прямо к нему.
Вот мой код:
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, из-за которого у меня головокружение.
Это результат: [[email protected]
.
Я хочу, чтобы на выходе отображались точные номера из списка ( arr
). Как это сделать?
Каждый объект имеет метод toString()
, а метод по умолчанию – отображать представление имени classа объекта, а затем @
за которым следует его hash-код. Итак, то, что вы видите, представляет собой представление по умолчанию для toString()
для массива int
. Чтобы распечатать данные в массиве, вы можете использовать:
System.out.println(java.util.Arrays.toString(arr));
Или вы можете перебирать массив с циклом for
как другие, опубликованные в этом streamе.
Это стандартное строковое представление массива (странный текст).
Вам просто нужно пройти через него:
for(int i : arr){ System.out.println(i); }
Для печати используйте значения.
for(int i=0; i
Он печатает его метод .toString (), который вы должны печатать каждый элемент
for(int i=0; i
BTW Вы можете написать
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));
System.out.println(Arrays.toString(arr));
Текущий выход – это [email protected]
.
Если вам нужно печатать массивы с использованием более одного измерения:
Arrays.deepToString(arr);
Также не забудьте переопределить метод toString()
для пользовательских classов, чтобы получить представление объекта objet по вашему выбору, а не представление по умолчанию, которое представляет собой [email protected]
Как это:
for (int i = 0; i < arr.length; ++i) { System.out.println(arr[i]); }
Это «странное число» является ссылкой на массив, который вы распечатали. Это поведение по умолчанию, встроенное в метод java.lang.Object toString ().
Вы должны переопределить его в своих собственных объектах, если просмотреть ссылку недостаточно.
for (int i = 0; i < arr.length; ++i) { System.out.println(arr[i]); }
Моя версия короче!
Используйте Arrays.toString () и PrintStream.printf (String format, Object … args) .
System.out.printf("%s%n", Arrays.toString(arr));
Вы напечатали ссылку, а не значения в ссылке … В один прекрасный день все станет ясно с C.