0

次のプロトタイプを持つ関数があるとします。

public static funWithMatrices(int[][] aux)

これで、次のことができます。

int i = aux.length;

の数を取得rowsauxます。同様に、次のことができます。

int j = aux[i].length;

各列の長さを取得するだけです。しかし、これを行うためのより良い方法はありますか? もちろん、コンパイラは、行/列の長さが異なる任意の配列ではなく、渡されたものが行列であることを知ることはできませんが、どうにかしてそれを制約することは可能ですか?

matrix与えられた制約で独自のオブジェクトを作成するよりも、すでに組み込まれているものにもっと興味があります。それは簡単にできますが、私が求めているのはそれほどではありません。

スニーク編集:プロトタイプを のようなものに再定義する可能性もあることに気づきましたがint[][] aux, n, m、それも私が求めていることではありません。

4

2 に答える 2

0

次のように使用できるla4jライブラリもあります。

public static void funWithMatrices(Matrix aux) {
   int rows = aux.rows();
   int columns = aux.columns();

   // do what you want with matrix
   // for example multyply each cell by 2 if it's symmetric matrix

   if (aux.is(Matrices.SYMMETRIC_MATRIX)) {
       Matrix aux2 = aux.transform(Matrices.asMulFunction(2.0));
   }
}

// a caller
funWithMatrices(new Basic2DMatrix(new double[][]{ 
    { 1.0, 2.0 }, 
    { 3.0, 4.0 } 
}));
于 2013-09-23T04:48:27.923 に答える