打印一个具有相同值的周长的数字框

时间:2017-10-17 18:33:50

标签: java for-loop

我需要一系列for循环来返回如下所示的框,具体取决于m&的值。 n

应输出:

1  1  1  1  1  1  1      
1  2  2  2  2  2  1    
1  2  3  3  3  2  1   
1  2  2  2  2  2  1   
1  1  1  1  1  1  1

下面是我的代码到目前为止,它使用一系列循环将框拆分为一半,并上升或下降列和行的值。我被困的地方是试图找到一种方法来为这些值制作这些周界。另请注意,这应该可以在不使用任何if语句的情况下工作。

int m = 5; //column value
int n = 7; //row value
int column;

for (int row = 0; row <= (m / 2); row++) {
    //Ascending
    for (column = 1; column < (n / 2); column++) {
        int outputNumber = row + 1;
        System.out.print(outputNumber + " ");
    }

    //Fixed
    do {
        int outputNumber = row + 1;
        System.out.print(outputNumber + " ");
    }
    while (column < 0);

    //Descending
    for (column = n / 2; column >= 0; column--) {
        int outputNumber = row + 1;
        System.out.print(outputNumber + " ");
    }
    System.out.println();
}

for (int row = m / 2; row > 0; row--) {
    for (column = 1; column <= n; column++) {
        System.out.print(row + " ");
    }
    System.out.println();
}

上述代码的当前输出:

1 1 1 1 1 1 1     
2 2 2 2 2 2 2     
3 3 3 3 3 3 3     
2 2 2 2 2 2 2     
1 1 1 1 1 1 1

2 个答案:

答案 0 :(得分:0)

这是我的结果。我知道它有点复杂和快速写,但它解决了你的问题。我还用其他数字测试过它:

int m = 5; //column value
int n = 7; //row value

for (int i = 0; i < m / 2 + 1; i++) {
    for (int j = 0; j < i + 1; j++) {
        System.out.print(j + 1 + " ");
    }
    for (int j = 0; j < n - ((i + 1) * 2); j++) {
        System.out.print(i + 1 + " ");
    }
    for (int j = 0; j < i + 1; j++) {
        System.out.print(i + 1 - j + " ");
    }

    System.out.println("");
}

for (int i = m / 2 + 1; i < m; i++) {
    for (int j = 0; j < m - i; j++) {
        System.out.print(j + 1 + " ");
    }
    for(int j = 0; j < n - (m - i) * 2; j++) {
        System.out.print(m-i + " ");
    }
    for(int j = 0; j < m - i; j++) {
        System.out.print(m - i - j + " ");
    }

    System.out.println("");
}

答案 1 :(得分:0)

假设我的理解是正确的,周边瓷砖应该是1,然后每个瓷砖应该显示最少数量的步骤&#39;它需要从矩阵外部到达那里。

我个人很难想象/遵循您的解决方案,因此我不确定我的建议是否符合您的理解。

首先,让这个矩阵的构造与该矩阵的打印分开。我认为这样可以保持整洁,但那是我的风格。

假设你的矩阵中有c列和r行。因此,我们将使用嵌套for循环迭代每个单元格。

wx.GenericProgressDialog