java将一维数组的内容传输到二维数组
我试图制作一个加密程序,用户输入一条信息,然后将“字母转换成数字”
例如,用户输入一个ABCD
作为他的消息。转换后的数字将是1 2 3 4
,数字存储在一维整数数组中。我想做的是使用二维数组将其放入一个2x2矩阵中
以下是我的代码片段:
int data[] = new int[] {10,20,30,40};
*for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
for (int ctr=0; ictr<data.length(); ictr++){
a[i][j] = data[ctr];}
}
}
我知道代码有问题,但我真的迷路了
如何将其输出为以下内容
10 20
30 40
(而不是仅仅10,20,30,40
)
# 1 楼答案
这里有一种方法。这不是唯一的办法。基本上,对于输出中的每个单元格,计算初始数组的相应索引,然后进行赋值
# 2 楼答案
您的代码是接近,但不太正确。具体来说,最里面的循环(带有ctr的循环)并没有完成多少工作:它实际上只是重复地将当前
a[i][j]
设置为一维数组中的每个值,最终以每个单元格中数组中的最后一个值结束。你的主要问题是对如何ctr进入这些循环感到困惑这里有两种常见的方法来说明你要做的事情。我做的一般假设是,你想把长度为L的数组打包成MxN2D数组,其中M x N=L
第一种方法是迭代二维数组,从一维数组中提取适当的值。例如(我用m和N来表示以下尺寸):
这里,我们使用i和j作为二维索引,并从0开始ctr,然后在逐步遍历一维数组时增加它。这种方法还有另一种变体,即显式计算源索引,而不是使用增量,例如:
第二种方法是迭代一维数组,并计算二维数组中的目标位置。模和整数除法有助于:
所有这些方法都有效。根据你的情况,有些可能比其他更方便。请注意,如果必须同时进行其他变换,则这两种显式计算的方法可能更方便,例如,上面的最后一种方法将使水平翻转二维矩阵变得非常容易