Re: changing array dimension in a method
"Daniel Malek" <daniel_malek001@hotmail.com> writes:
I have a two dimensional array (myArray) and need to change its dimensions
You can not change the dimension of an array in the same
sense that suggest that you can not change the value of
the number 3.
You can, however, create a new array with another dimension
at run-time.
The following example code shows how to create and populate an
array, when the dimension becomes only known at run-time.
In this example, an array with 3 dimensions of sizes 4, 5, and
6, respectively, is created, filled, and printed.
public class Main
{
public static int[] cdr( final int[] list )
{ return java.util.Arrays.copyOfRange( list, 1, list.length ); }
public static java.lang.Object build( final int ... extensions )
{ final java.lang.Object array = java.lang.reflect.Array.newInstance
( java.lang.Integer.TYPE, extensions );
for( int i = 0; i < extensions[ 0 ]; ++i )if( extensions.length > 1 )
java.lang.reflect.Array.set( array, i, build( cdr( extensions )));
else java.lang.reflect.Array.setInt(( int[] )array, i, i );
return array; }
public static void print( final java.lang.Object array )
{ for( int i = 0; i < java.lang.reflect.Array.getLength( array ); ++i )
if( array.getClass().getName().startsWith( "[[" ))
print( java.lang.reflect.Array.get( array, i )); else
java.lang.System.out.print( java.lang.reflect.Array.getInt( array, i )); }
public static void main( final java.lang.String[] args )
{ print( build( 4, 5, 6 )); }}