【问题标题】:Java creating a 2d int array which getting bigger insideJava 创建一个内部变大的 2d int 数组
【发布时间】:2020-01-04 18:18:13
【问题描述】:

我想创建一个从外到内变大的 2d int 数组,第一层应该从 1 开始,下一层应该高 1。

当 n = 3 时,它应该是这样的:

  • 1 1 1 1 1 1
  • 1 2 2 2 2 1
  • 1 2 3 3 2 1
  • 1 2 3 3 2 1
  • 1 2 2 2 2 1
  • 1 1 1 1 1 1

这就是我已经拥有的

    int n = 3;
    int[][] feld = new int[2*n][2*n];
    int c = 1 ;

    for (int i = 0; i < 2*n; i++) {
        for (int j = 0; j < 2*n; j++) {
            feld[i][j] = c-i+j;
        }
        c++;
    }

    for (int i = 0; i < feld.length; i++) { //this to printing the matrix
        for (int j = 0; j < feld[i].length; j++) {
            System.out.print(feld[i][j] + " ");
        }
        System.out.println();
    }

【问题讨论】:

  • 你的问题是......?
  • 问题是我将如何解决这个问题
  • 究竟是什么问题?

标签: java matrix 2d


【解决方案1】:

这应该可行。

    int n = 3;
    int[][] feld = new int[2*n][2*n];
    int c = 0;

    while(c<n) {
        for(int i = c; i < 2*n-c; i++) {
            feld[c][i] = c+1;
            feld[i][c] = c+1;
            feld[2*n-c-1][i] = c+1;
            feld[i][2*n-c-1] = c+1;
        }
        c++;
    }
    for (int i = 0; i < feld.length; i++) { //print the matrix
        for (int j = 0; j < feld[i].length; j++) {
            System.out.print(feld[i][j] + " ");
        }
        System.out.println();
    }

您可以将 n 更改为任何值,它仍然可以工作

【讨论】:

    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多