Вывод элементов массива с массивами.метод toString()

я использовал приведенный ниже код для создания и заполнения массива, однако, когда дело доходит до печати массива, я не получаю результат, который я ожидаю при использовании .

вместо печати

newArray: [2, 4, 6]
newArray: [8, 10, 12]
etc..

печати

newArray: [[I@15db9742, [I@6d06d69c, [I@7852e922, [I@4e25154f]
newArray: [[I@15db9742, [I@6d06d69c, [I@7852e922, [I@4e25154f]
etc..

код:

public static void main(String[] args) {
    int[][] newArray = new int[4][3];
    int number = 2;
    for (int rowCounter = 0; rowCounter < newArray.length; rowCounter++) {
        for (int colCounter = 0; colCounter < newArray[rowCounter].length; colCounter++) {
            newArray[rowCounter][colCounter] = number;
            number += 2;
        }
        System.out.println("newArray: " + Arrays.toString(newArray));
    }
}

любая помощь в этом была бы очень признательна.

4 ответов


можно использовать deepToString вместо toString:

System.out.println(Arrays.deepToString(newArray));

попробовать

Arrays.deepToString(newArray)

С результатом, который вы хотите, убедитесь, что массив, который вы объявляете, является one-dimensional. Вы объявили two dimensional array который вы используете неправильно.
Изменить int[][] newArray to int[] newArray


когда вы называете toString(Object[] a) внутренне он вызовет объект.метод toString.

(obj == null) ? "null" : obj.toString();

если вы хотите напечатать весь элемент, то, как упоминалось, вы должны deepToString вместо toString метод.Внутренне это будет для массива типа объекта, который будет проходить через массив и преобразовываться в строку.

например, каждый элемент массива в вашем случае является int array будет вызывать toString.

if (eClass.isArray()) {
                    if (eClass == int[].class)
                        buf.append(toString((int[]) element));