Java 如何使用一维数组中的值填充二维数组?

Java 如何使用一维数组中的值填充二维数组?,java,arrays,multidimensional-array,populate,Java,Arrays,Multidimensional Array,Populate,我用从另一个方法收到的一些值填充了一个数组,我想用第一个方法的值填充一个二维数组,例如: int[]单数组;//这里没有值得证明的价值, //让我们认为这是有人居住的 int[]bidimArray=新int[80][80]; 对于(int i=0;i

我用从另一个方法收到的一些值填充了一个数组,我想用第一个方法的值填充一个二维数组,例如:

int[]单数组;//这里没有值得证明的价值,
//让我们认为这是有人居住的
int[]bidimArray=新int[80][80];
对于(int i=0;i<80;i++){
对于(int j=0;j<80;j++){
对于(int x=0;x

我认为在上面的解决方案中,除了看起来非常丑陋的解决方案之外,它只保存了
bidimArray[][]
singleArray
的最后一个位置。谁能帮帮我吗?

这里不需要第三个
for
循环。这就是你错的地方。对代码的更改是对输入到新2D数组中的每个值简单地递增
x
,并省略第三个for循环

int[]单数组;
int[]bidimArray=新int[80][80];
int x=0;
对于(int i=0;i<80;i++){
对于(int j=0;j<80;j++){
bidimArray[i][j]=单数组[x];
x++;
}
}
您还可以像这样组合循环中的两条内线:

bidimArray[i][j]=singleArray[x++];

正如注释中指出的,您不应该硬编码数组大小。对于您的方法,您必须确保
singleArray
至少包含
80*80
元素。如果没有给出,您应该确保事先检查该约束。

使用1d数组
6
中的值循环填充2d数组
8x7
。无论大小,它都适用于较大和较小的阵列:

int[]arr1={1,2,3,4,5,6};
int m=8;
int n=7;
int[]arr2=IntStream.range(0,m)
.mapToObj(i->IntStream.range(0,n)
.map(j->arr1[(j+i*n)%arr1.length])
.toArray())
.toArray(int[]]::新建);
//输出
Arrays.stream(arr2).map(Arrays::toString.forEach(System.out::println);

另见:

[1, 2, 3, 4, 5, 6, 1]
[2, 3, 4, 5, 6, 1, 2]
[3, 4, 5, 6, 1, 2, 3]
[4, 5, 6, 1, 2, 3, 4]
[5, 6, 1, 2, 3, 4, 5]
[6, 1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 1]
[2, 3, 4, 5, 6, 1, 2]