2017-02-13 9 views
-2

アレイがどのように動作しているか、特にアレイに特定のサイズが与えられていないときには、私は少し問題があります。JAVA:パラメータに同じ行数/列数を持つ新しい配列を作成していますか?

public int [][] someMethodHere(int [][] myNewArray) { 
//code here 
} 

が、私はちょうどいくつかの数値に追加することなく、(パラメータの行数と列数が同じメソッド内の別の配列を作成する方法を知りたい:例えば、私はコードを与えられていた場合新しい配列に同じ値を書き込むだけです)。

+3

あなたは、単に配列のlengthプロパティと使用を取得それは新しい配列を作る時です。 –

+1

これは1次元配列です。 「行と列」とはどういう意味ですか? – ajb

+0

申し訳ありませんが、別の括弧で追加するのを忘れました – EyeOfTheOwl

答えて

-1

アレイのコピーを作成し、新しいアレイをクリアすることができます。

public static int[][] someMethodHere(int[][] src) { 
    int length = src.length; 
    int[][] target = new int[length][src[0].length]; 
    for (int i = 0; i < length; i++) { 
     System.arraycopy(src[i], 0, target[i], 0, src[i].length); 
     Arrays.fill(target[i], 0); 
    } 
    return target; 
} 
+0

これは、ヌルの列と列の束を作成します。 – shmosel

+0

これで意味がなくなりました。クリーンな配列を作成してから、ソース配列からデータをコピーして直ちにクリアします。 – shmosel

0

アレイの作成時に設定する固定サイズのアレイがあります。

ListまたはMapのような他の多くのデータ構造とは異なり、「スマート」であり、必要に応じてサイズ変更を処理できます。

アレイを作成するときに、あなたはそれがどのように大きなコンパイラに指示する必要があります。

// create the original array with 10 slots 
int[] originalArray = new int[10]; 

あなたは、同じサイズの新しい配列を作成したい場合は、あなたがArrayタイプのlengthプロパティを使用することができます。 2次元配列のあなたの場合は

// create a new array of the same size as the original array 
int[] newArray = new int[originalArray.length]; 

、あなたはこのようにそれを行うことができます:二次元の長さを指定するとき、私は最初の要素の長さを取得することを

// create the original array 
int[][] originalArray = new int[10][20]; 

// create a new array of the same size as the original array 
int[][] newArray = new int[originalArray.length][originalArray[0].length]; 

お知らせ

元の配列に格納されます。これは、すべての行の長さが同じであれば機能します。

行は異なる長さのものである場合は、このような配列の最初の次元を反復することによって、新しいアレイ内の各列の長さを設定できます。

// create a new array where the first dimension is the same size as the original array 
int[][] newArray = new int[originalArray.length][]; 

// set the size of the 2nd dimension on a per row basis 
for(int i = 0; i < originalArray.length; i++) { 
    newArray[i] = new int[originalArray[i].length]; 
} 
関連する問題