Массив не инициализируется как предсказано - PullRequest
1 голос
/ 08 апреля 2020

Я новичок в Java. Я читал это недавно

Элементы в массиве, выделенном new, будут автоматически инициализированы нулем (для числовых типов c), false (для логических значений) или null (для ссылочных типов) ссылка https://www.geeksforgeeks.org/arrays-in-java/

int n=scan.nextInt();
int a[]=new int[n];
int a1[]=new int[5];
System.out.println(a);
System.out.println(a1);

Оба массива дают мне искаженное значение, например, [I@4b67cf4d

Почему это происходит?

Ответы [ 3 ]

1 голос
/ 08 апреля 2020

Вам нужно определить ToString (), чтобы вывести красивую строку для таких объектов, как массивы. Массивы не имеют одного, определенного по умолчанию.

Вместо этого попробуйте использовать

Arrays.toString(a)
0 голосов
/ 08 апреля 2020

Если вы хотите, чтобы все значения были разделены пробелами, вы можете использовать для l oop, чтобы распечатать значения; это медленнее, но вы можете изменить его по своему вкусу.

    int n = scan.nextInt();
    int a[] = new int[n];
    int a1[] = new int[5];

    // print a
    System.out.println("Array a values:");
    for (int i = 0; i < a.length; i++) {
        System.out.print(a[i] + " ");
    }
    System.out.println(); // new line

    // print a1
    System.out.println("Array a1 values:");
    for (int i = 0; i < a1.length; i++) {
        System.out.print(a1[i] + " ");
    }
    System.out.println();

Хорошая работа над вашим кодом, продолжайте улучшаться!

0 голосов
/ 08 апреля 2020

Вы печатаете строковые представления самих массивов, а не их содержимого. Это конкретное представление кодирует тип данных и адрес хранения.

Один из способов получить то, что вам нужно, это использовать java.util.Arrays.toString():

System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(a1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...