0

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

2 に答える 2

0

2 次元配列がギザギザ配列ではないと仮定すると、2/d 配列の最下位列の元の長さはどこにあるA[i]はずの元の座標よりもA[i/x][i%x]x

于 2013-03-11T18:31:38.493 に答える
0

わかりました、私はあなたが正しいかどうか本当にわかりません。しかし、私はこのように理解しています:
あなたは 2 ディムを持っています。配列で、それを 1 次元に変換したい。配列。
したがって、最初の列と最初の行を準備する必要があります。
次に、この値を 1 次元の最初の位置に追加します。配列。
次に、次の行を読み取り、この値を追加したいとします。
私が正しければ、1次元配列の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 に答える