我试图创建一个采用一维数组并将其作为二维数组打印出来的方法,但尽可能方形,因此看起来不错。我已经尝试创建for循环来执行此操作,但是如何计算出有多少行和列?有人可以给我一个如何制作一个的逻辑,所以我可以用它来创建我自己的?解释会很可爱。
答案 0 :(得分:1)
这将创建一个方形且大到足以容纳旧数组的所有元素的新数组。它取原始数组长度的平方根并向上舍入。
int size = (int)Math.ceil(Math.sqrt(oldArray.length));
int[][]newArray = new int[size][size];
答案 1 :(得分:0)
示例:
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
并将array
的所有元素复制到array1
。
_________________
array1 = |1|2|3|4|5|6|7|8|9|
现在不要问我代码。
答案 2 :(得分:0)
此方法将打印一维数组中的元素尽可能接近控制台输出上的方形图案。它在元素之间放置标签以在每行上排列它们。
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++;
}
}
}
答案 3 :(得分:-1)
检查出来
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];