2010-12-05 4 views

Antwort

0

Wenn Sie dies tun möchten, erstellen Sie eine Klasse, die das Array als Instanzvariable enthält und alle Interaktionen damit behandelt.

3

Arrays in Java haben eine feste Länge, Sie können sie also nicht wirklich erweitern. Sie müssen ein neues, größeres Array erstellen und dann den Inhalt des alten Arrays in das neue Array kopieren. Wie folgt aus:

public class Test { 

    public static void main(String[] args) { 
     int[][] myArray = new int[3][7]; 

     // Print first dimension 
     System.out.println(myArray.length); // prints 3 

     myArray = addRow(myArray); 

     // Print first dimension 
     System.out.println(myArray.length); // prints 4 

    } 

    private static int[][] addRow(int[][] previous) { 

     int prevRowCount = previous.length; 

     int[][] withExtraRow = new int[prevRowCount + 1][]; 
     System.arraycopy(previous, 0, withExtraRow, 0, previous.length); 
     withExtraRow[prevRowCount] = new int[] { 1, 2, 3, 4, 5, 6, 7 }; 

     return withExtraRow; 
    } 

} 

Sie könnte natürlich auch zum Beispiel verwenden ein ArrayList<SomeType[]>, die dynamisch wächst. (Dies ist tatsächlich der bevorzugte Weg, wenn es um dynamisch wachsende Arrays geht.)

import java.util.*; 

public class Test { 

    public static void main(String[] args) { 
     List<int[]> myArray = new ArrayList<int[]>(); 

     // Print first dimension 
     System.out.println(myArray.size()); // prints 0 

     // Add three rows 
     myArray.add(new int[] { 1, 2, 3, 4, 5, 6, 7 }); 
     myArray.add(new int[] { 11, 12, 13, 14, 15, 16, 17 }); 
     myArray.add(new int[] { 21, 22, 23, 24, 25, 26, 27 }); 

     // Print first dimension 
     System.out.println(myArray.size()); // prints 3 

    } 
} 
0

Sie können nicht.

Sie könnten ein neues Array mit den richtigen Dimensionen erstellen, aber ich würde empfehlen, über die ArrayList-Klasse zu lesen, die (so weit Sie wissen) dynamische Arrays zulässt.

1

Sie könnten auch Verfahren verwenden Arrays.copyOf, zum Beispiel:

import java.util.Arrays; 

public class Array2D { 
    public static void main(String[] args) { 
     int x = 5 //For example 
     int[][] myArray = [x][7]; 

     myArray = Arrays.copyOf(myArray, myArray.length + 1); //Extending for one 
     myArray[myArray.length - 1] = new int[]{1, 2, 3, 4, 5, 6, 7}; 
    } 
}