0

我已经设法将其转换为输出二维数组中的值,但不知道如何获得该位置。

这是我的代码:

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;
}
4

2 回答 2

0

好吧,我不太确定我是否让你正确。但我是这样理解的:
你有一个 2 暗淡。数组并希望将其转换为 1 暗淡。大批。
因此,您要准备第一列和第一行。
然后你想在 1 dim 的最前位置添加这个值。大批。
然后你阅读下一行并想要添加这个值等等。
如果我是对的,我建议为您的 1 dim 数组使用 arrayList。因为你不知道柱子有多深。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;
    }
}

如果我错过了您的问题,我很抱歉回答“错误”。
我希望它会帮助你!

于 2013-03-11T18:52:55.630 回答
0

假设您的二维数组不是锯齿状数组,那么原始坐标A[i]应该是A[i/x][i%x]您的二维数组x的最低有效列的原始长度

于 2013-03-11T18:31:38.493 回答