繁体   English   中英

将一维数组打印为两个二维数组

[英]Printing a one dimensional array as a two dimensinoal array

我正在尝试创建一种方法,该方法采用一维数组并将其打印为二维数组,但要尽可能方形,这样看起来就很好。 我尝试创建for循环来执行此操作,但是您如何确定有多少行和列呢? 有人可以给我做一个的逻辑,以便我可以用它来创建自己的逻辑吗? 一个解释会很可爱。

这将形成一个新的正方形数组,其大小足以容纳旧数组的所有元素。 它取原始数组长度的平方根并四舍五入。

int size = (int)Math.ceil(Math.sqrt(oldArray.length));
int[][]newArray = new int[size][size];

例:

array =    |1 2 3|
           |4 5 6|
           |7 8 9| (3*3)

制作一维数组

int array1 = new int[3*3];

或者你可以得到array长度

对于行长度: int row = array.length;

对于列长度: int column = array[0].length;

然后int array1 = new int[row*column];

现在遍历array和所有元素复制arrayarray1

         _________________
array1 = |1|2|3|4|5|6|7|8|9|

现在不要问我代码。

此方法将一维数组中的元素打印到尽可能接近控制台输出的正方形图案的位置。 它将制表符放在元素之间,以将它们在每一行上对齐。

private void printMyArray(String[]  onDimensionalArray) {
    int cols = (int) Math.floor(Math.sqrt(onDimensionalArray.length));
    int currentCol = 0;
    for(String element : onDimensionalArray) {
        System.out.print(element + "\t");
        if(currentCol >= cols) {
            System.out.println("");
            currentCol = 0;
        }
        else {
            currentCol++;
        }
    }
}

看一下这个

int array2d[][] = new int[10][3];


for(int i=0; i<10;i++)
for(int j=0;j<3;j++)
   array2d[i][j] = array1d[(j*10) + i];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM