Java 从输入的一维数组返回二维数组
我想将输入的1d数组(1x6)返回到一个2d数组(3x2)中。我想我已经弄明白了,但在我的代码中,我一直得到这个错误数组,但int找到了。我认为这是因为输入数组是一维数组而不是二维数组,但我不确定。有人能帮我修一下吗 例如: int[]d={4,1,20,45,2,31}; 返回一个2D数组3x2 输出: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 我的代码如下: 公共课实习
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]]
另见: