我已设法将其转换为输出2D数组中的值,但不知道如何获得该位置。
这是我的代码:
public static int[] convert(int [][]twodarray)
{
int[] onedarray = new int[twodarray.length * twodarray.length];
for(int i = 0; i < twodarray.length; i ++)
{
for(int s = 0; s < twodarray.length; s ++)
{
onedarray[(i * twodarray.length) + s] = twodarray[i][s];
}
}
return onedarray;
}
public static int [] printonedarray(int [] onedarray)
{
System.out.print("onedarray: ");
for(int i = 0; i < onedarray.length; i++)
{
System.out.print(onedarray[i] + "\t");
}
System.out.println();
return onedarray;
}
答案 0 :(得分:0)
假设您的2-d数组不是锯齿状数组,则A[i]
的原始坐标应为A[i/x][i%x]
,其中x
是最低有效列的原始长度2 / d array
答案 1 :(得分:0)
好的,我不确定我是否能得到你的相关信息。但我这样理解:
你有一个2昏暗。数组,并希望将其转换为1昏暗。阵列。
因此,您想要准备第一个coloumn和第一行。
然后你想在1 dim的forst位置添加这个值。阵列。
然后你阅读下一行并想要添加这个值,依此类推。
如果我是对的,我建议你的1 dim数组的arrayList。因为你不知道coloumns有多深。 ArrayLists是动态的。你可以简单地添加一个元素,而不需要给出一个位置
您的代码建议非常好,我只是将其转换为ArrayList。
import java.util.ArrayList;
public class test
{
public static ArrayList<Integer> convert(int [][]twodarray)
{
ArrayList<Integer> onedarray = new ArrayList<Integer> ();
for(int i = 0; i < twodarray.length; i ++)
{
for(int s = 0; s < twodarray[i].length; s ++)
{
onedarray.add(twodarray[i][s]);
}
}
return onedarray;
}
public static ArrayList<Integer> printonedarray(ArrayList<Integer> onedarray)
{
System.out.print("onedarray: ");
for(int i = 0; i < onedarray.size(); i++)
{
System.out.print(onedarray.get(i) + "\t");
}
System.out.println();
return onedarray;
}
}
如果我错过了你的问题,我很抱歉“错误的”答案。
我希望它能帮到你!