私はm×nの行列を持ち、列の数(増減)を変更する必要があります。私は次のコードを持っていますが、動作しません。Javaで行列のサイズを増減する方法は?
public class Resize {
public static int [][] A = new int [2][2];
public static int i, j;
public static void main(String[] args) {
A = (int[][])resizeArray(A,4);
for(i = 0 ; i < 2 ; i++){
for(j = 0 ; j < 4 ; j++){
A[i][j] = j+i;
System.out.print(A[i][j]+" ");
}
System.out.println("");
}
}
// resize arr from dimension n = 20 to dimension n = 14 ///////////////
private static Object resizeArray (Object oldArray, int newSize) {
int oldSize = java.lang.reflect.Array.getLength(oldArray);
Class elementType = oldArray.getClass().getComponentType();
Object newArray = java.lang.reflect.Array.newInstance(elementType, newSize);
int preserveLength = Math.min(oldSize, newSize);
if (preserveLength > 0)
System.arraycopy(oldArray, 0, newArray, 0, preserveLength);
return newArray;
}
}
「動作しません」は動作上の問題の説明ではありません。それ以外では、配列のサイズを変更することはできません。完全に新しい配列を作成し、それを既存の配列に代入するだけで、実際には最初の配列を破棄することができます。 – GhostCat