4

私は Java プログラミングが初めてで、課題の 1 つの最後の質問に頭を悩ませることができません。

2 次元配列を検索し、2 次元配列の数値を入力数値と比較する静的メソッドを作成するように言われました...次のように:

private static int[] searchArray(int[][] num, int N){

ここで、返される部分は、パラメータ変数 N よりも大きい各行の最初の数値のインデックスを示す新しい 1 次元配列です。N よりも大きい数値がない場合は、-1 が返されます配列のその位置。

たとえば、「A」という名前の多次元配列は次のようになります。

4 5 6

8 3 1

7 8 9

2 0 4

このメソッドを使用して searchArray(A, 5) を実行すると、答えは "{2,0,0,-1)" になります。

4

2 に答える 2

1

Java 2D配列についての非常に良い説明があります

    int num[][] = {{4,5,6},{8,3,1},{7,8,9}};
    int N = 5;
    int result[] = new int[num.length];
    for(int i=0; i<num.length; i++){
        result[i] = -1;
        for(int j=0; j<num[0].length; j++){
            if( N < num[i][j] ){
                result[i] = j;
                break;
            }
        }
    }

    for(int i=0; i<result.length; i++){
        System.out.println(result[i]);
    }

最初の for ループ (内部に for があるもの) は、2D 配列を上から下へ、左から右の方向にトラバースします。これは、最初は 4 で、次に 5,6,8,3,1,7,8,9 です。

最初に結果配列が作成されます。長さは num の行数に依存します。N より大きい数値がない場合、result[i] は -1 に設定されます。N より大きい数値が見つかった場合、列インデックスは保存されます result[i] = j と for ループを終了するためにブレークが使用されます。 N より大きい最初の数値のインデックスを見つけたいだけです。

最後の for ループは結果を出力するだけです。

于 2010-12-13T03:28:35.053 に答える
0

通常、多次元配列を使用する場合は、ネストされた for ループを使用します。

for(int i = 0; i < outerArray.length; i++){
   //this loop searches through each row
   for(int j = 0; j < innerArrays.length; j++) {
     //this loop searches through each column in a given row
     //do your logic code here
   }
}

質問を理解する必要があるため、基本的な構造以上のものは提供しません。今後、このような構造に何度も遭遇することになるでしょうが、これで始められるはずです。

于 2010-12-13T03:14:29.123 に答える