Java 从输入的一维数组返回二维数组

Java 从输入的一维数组返回二维数组,java,arrays,loops,for-loop,Java,Arrays,Loops,For Loop,我想将输入的1d数组(1x6)返回到一个2d数组(3x2)中。我想我已经弄明白了,但在我的代码中,我一直得到这个错误数组,但int找到了。我认为这是因为输入数组是一维数组而不是二维数组,但我不确定。有人能帮我修一下吗 例如: int[]d={4,1,20,45,2,31}; 返回一个2D数组3x2 输出: 4 1 20 45 2 31 错误: transmo[j][i] = d[i][j]; array required, but int found 我的代码如下: 公共课实习

我想将输入的1d数组(1x6)返回到一个2d数组(3x2)中。我想我已经弄明白了,但在我的代码中,我一直得到这个错误数组,但int找到了。我认为这是因为输入数组是一维数组而不是二维数组,但我不确定。有人能帮我修一下吗

例如:

int[]d={4,1,20,45,2,31}; 返回一个2D数组3x2

输出:

4  1  
20 45  
2   31
错误:

transmo[j][i] = d[i][j];
array required, but int found
我的代码如下:

公共课实习{ 公共无效a_三点b_两点[]d{ int transmo[][]=新的int[3][2]; 对于int i=0;i<1;i++{ 对于int j=0;j<6;j++{ transmo[j][i]=d[i][j]; } } 对于int i=0;i<3;i++{ 对于int j=0;j<2;j++{ System.out.printtransmo[i][j]+\t; } System.out.println; } } }
第一组循环必须与第二组循环相同,否则transmo[i][j]将失败

然后需要将索引计算为d

对于int i=0;i<3;i++{ 对于int j=0;j<2;j++{ transmo[i][j]=d[i*2+j]; } }
第一组循环必须与第二组循环相同,否则transmo[i][j]将失败

然后需要将索引计算为d

对于int i=0;i<3;i++{ 对于int j=0;j<2;j++{ transmo[i][j]=d[i*2+j]; } }
迭代1D数组,然后使用模和余数为2D输出数组编制索引:

公共整数[]a_三个整数由[u两个整数[]d,int nrow,int ncol{ int transmo[][]=新int[nrow][ncol]; 对于int i=0;i
[[4, 1], [20, 45], [2, 31]]
这里的逻辑是,对于输入1D数组中的每两个步骤,我们将行索引增加1,并根据除以2后的余数增加列索引


请注意,此版本的代码非常灵活,适用于任何二维数组。

迭代1D数组,然后使用模和余数为二维输出数组编制索引:

公共整数[]a_三个整数由[u两个整数[]d,int nrow,int ncol{ int transmo[][]=新int[nrow][ncol]; 对于int i=0;i
[[4, 1], [20, 45], [2, 31]]
这里的逻辑是,对于输入1D数组中的每两个步骤,我们将行索引增加1,并根据除以2后的余数增加列索引


请注意,此版本的代码非常灵活,适用于任何二维数组。

由于d[]是1d数组,您应该使用d[index]来访问它。这里需要解决的是tansmo索引和d索引之间的关系

i=0 j=0=>d[index]index=0 i=0 j=1=>d[index]index=1 i=1 j=0=>d[index]index=2 i=1 j=1=>d[index]index=3 i=2 j=0=>d[index]index=4 i=2 j=1=>d[index]index=5 2*i+j=指数 所以你的循环是这样的:

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 2; j++){
        transmo[i][j] = d[2*i+j];
    }
}

由于d[]是一个1d数组,您应该使用d[index]来访问它。这里需要解决的是tansmo索引和d索引之间的关系

i=0 j=0=>d[index]index=0 i=0 j=1=>d[index]index=1 i=1 j=0=>d[index]index=2 i=1 j=1=>d[index]index=3 i=2 j=0=>d[index]index=4 i=2 j=1=>d[index]index=5 2*i+j=指数 所以你的循环是这样的:

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 2; j++){
        transmo[i][j] = d[2*i+j];
    }
}
可以使用streams从1d阵列创建和填充新的2d阵列:

int[]arr1d={4,1,20,45,2,31}; //一维数组中元素的索引 原子整数i=新的原子整数0; //创建并填充新的二维阵列“3x2” int[][]arr2d=IntStream.range 0,3 .mapToObjrow->IntStream.range 0,2 //从1d中获取元素 //数组并增加索引 .mapj->arr1d[i.getAndIncrement] .托雷 .toArrayint[]]::新的; //输出 System.out.PrintLnArray.DeepToStringr2D; // [[4, 1], [20, 45], [2, 31]] 另请参见:

您可以使用流从1d阵列创建和填充新的2d阵列:

int[]arr1d={4,1,20,45,2,31}; //一维数组中元素的索引 原子整数i=新的原子整数0; //创建并填充新的二维阵列“3x2” int[][]arr2d=IntStream.range 0,3 .mapToObjrow->IntStream.range 0,2 //从1d中获取元素 //数组并增加索引 .mapj->arr1d[i.getA [增加] .托雷 .toArrayint[]]::新的; //输出 System.out.PrintLnArray.DeepToStringr2D; // [[4, 1], [20, 45], [2, 31]] 另见: