Печать двумерного массива без лишних пробелов или линий - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь написать метод для двумерного массива, который будет печатать наши значения my с одним пробелом между ними, и между строками будет один символ новой строки между ними. Также не должно быть пробела перед первым значением или после последнего значения или новой строки перед первым или после последнего ряда. Мои значения печатаются аккуратно, но я не знаю, как убедиться, что нет лишних строк или пробелов. Я думал о реализации оператора if в моем коде или использовании метода trim. Вот мой код!

public static String arrayToString(int a[][]){

    int row = a.length;
    int column = a[0].length;
    String array = " ";
    for (int i = 0; i<row; i++) {
        for (int j = 0; j< column; j++){
            array += a[i][j] + " ";

        }
        array += "/n";
    }

    return array;
}

Ответы [ 2 ]

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

Вы только что ответили на свой вопрос

Обрежьте последний символ

public static String arrayToString(float a[][]){

        int row = a.length;
        int column = a[0].length;
        String array = ""; // I removed the space you had here
        for (int i = 0; i<row; i++) {
            for (int j = 0; j< column; j++){
                array += a[i][j] + " ";

            }
            array += "\n"; // I changed /n to \n
        }

        return array.substring(0,array.length()-2); // return the trimmed string
    }

или добавьте оператор if, чтобы проверить, является ли он последним элементом

public static String arrayToString(float a[][]){

        int row = a.length;
        int column = a[0].length;
        String array = ""; // I removed the space you had here
        boolean isLast = false;
        for (int i = 0; i<row; i++) {
            for (int j = 0; j< column; j++){
                isLast = i == row-1 && j == column-1?true:false;
                if(isLast)
                    array += a[i][j];
                else
                    array += a[i][j] + " ";

            }
            if(!isLast)
                array += "\n"; // I changed /n to \n
        }

        return array;
    }
0 голосов
/ 21 апреля 2020

Вы должны добавить if операторы, которые будут проверять, является ли это концом строки или концом всего и на основе этого добавлять или не добавлять пробел или новую строку.

Так что вместо того, чтобы просто иметь это array += a[i][j] + " ";

Вам необходимо проверить if (i != row - 1) (это конец строки) и только в этом случае добавить пробел.

То же самое относится к array += "/n";, вам необходимо проверьте значение j, чтобы убедиться, что вы не добавите его в конце

...