Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Почему при выводе массива в консоли я вижу не то, что хочу?

#массивы #java


Изучаю время от времени java и столкнулся с вот этим:
public static void testArray(){

    int myArray[] = {1, 2, 3, 4, 5};
    System.out.println(myArray);
}

В консоли я вижу вместо ожидаемого 12345, вот это: [I@42e816
При указании типа String я вижу несколько модифицированную запись: [Ljava.lang.String;@42e816
(но это не то, мне надо, чтобы я мог найти сумму чисел в массиве, а со строками я наверное
это не сделаю, или сделаю с большим количеством операций).
В общем, как мне вывести значения массива, и что бы это было в нормальном виде?    


Ответы

Ответ 1



Потому что Java не знает, чего вы хотите. Если хотите увидеть массив так, будто это список, то сделайте его списком: System.out.println(Arrays.asList(myArray)); Или просто руками: for (int v : myArray) System.out.println(v);

Ответ 2



Метод toString() не переопределен в классе массива в Java - а потому он работает там так же, как и в классе Object, т.е. выводит простое имя класса объекта вместе с его хэшкодом. Для красивого вывода массива можно воспользоваться соответствующим методом класса Arrays.

Ответ 3



Используйте метод Arrays.toString(), преобразующий массив в строку. Или напишите цикл, выводящий последовательно элементы массива.

Ответ 4



Метод Array.toString() справляется чётко с этой задачей. В моем случае int[] arrNumbers = {99, 567, 22, 45, 1, 91}; System.out.println(Arrays.toString(arrNumbers));

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

Отправить комментарий