Внешняя рамка нулей

Я написал этот код. По какой-то причине я получаю новую матрицу, но кажется, что последнее значение исходной матрицы отсутствует ...

    public static char[][] Frame_of_zeros(char[][]a)//builds an external frame of zeroes
{

    char[][]c3=new char[a.length+1][a[0].length+1];
    for(int i=0,j=0;i<c3.length;i++)//left column is composed of zeroes
    {
        c3[i][j]='0';
    }
    for(int j=0,i=0;j<c3[0].length;j++)//upper row of zeroes
    {
        c3[i][j]='0';
    }
    for(int i=c3.length-1,j=0;j<c3[0].length;j++)//most lower row composed of zeroes
    {
        c3[i][j]='0';
    }
    for(int i=0,j=c3[0].length-1;i<c3.length;i++)//right column is composed of zeroes
    {
        c3[i][j]='0';
    }

    for(int i=1,k=0;i<c3.length-1&&k<a.length;i++,k++)//i for the modified and k is the original
    {
        for(int j=1,l=0;j<c3[0].length&&l<a[0].length-1;j++,l++)//j for the modified and l is the original
        {
            c3[i][j]=a[k][l];
        }
    }
    return c3;
}
stackoverflow.com/help/how-to-ask
J-Alex 29.05.2018 19:34

Вам необходимо подробно объяснить, что произойдет с ожидать и что произойдет с фактически. Т.е. покажите конкретный пример. Посетите центр помощи и прочтите Как спросить.

Jim Garrison 29.05.2018 19:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
2
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Внешний фрейм означает, что вам нужно добавить по две строки / столбца (левый и правый / верхний и нижний), поэтому вам нужно увеличить размер вашей новой матрицы на дополнительную строку и столбец. Циклы для установки кадра на 0 были в порядке. В последнем внутреннем цикле вы устанавливаете уменьшенный размер исходной матрицы как условие вместо нового, как во внешнем цикле.

public static char[][] Frame_of_zeros(char[][]a)//builds an external frame of zeroes
{
    char[][]c3=new char[a.length+2][a[0].length+2];
    for(int i=0,j=0;i<c3.length;i++)//left column is composed of zeroes
    {
        c3[i][j]='0';
    }
    for(int j=0,i=0;j<c3[0].length;j++)//upper row of zeroes
    {
        c3[i][j]='0';
    }
    for(int i=c3.length-1,j=0;j<c3[0].length;j++)//most lower row composed of zeroes
    {
        c3[i][j]='0';
    }
    for(int i=0,j=c3[0].length-1;i<c3.length;i++)//right column is composed of zeroes
    {
        c3[i][j]='0';
    }

    for(int i=1,k=0;i<c3.length-1 && k<a.length;i++,k++)//i for the modified and k is the original
    {
        for(int j=1,l=0;j<c3[0].length-1 && l<a[0].length;j++,l++)//j for the modified and l is the original
        {
            c3[i][j]=a[k][l];
        }
    }
    return c3;
}

Другие вопросы по теме