Announcement

Collapse
No announcement yet.

Umgang mit Arrays

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Umgang mit Arrays

    Ich habe noch Schwierigkeiten mit Arrays.
    Ich will eine vorher nicht bestimmte Menge Daten aus einem File einlesen.
    Wie muß ich dann den Array initialisieren?
    Wenn ich z.B. String[][] arr=new String[5][]; definiere, ist zwar die 2. Dimension unbestimmt, kann aber auch die Felder dann
    nicht definieren (ArrayoutofBoundException oder so ähnlich).
    ?????

    Gruß, GF

  • #2
    Ein Array muss mit einer bestimmten Größe initialisiert werden, um ihm Werte zuordnen zu können.<br>
    Wenn Du im voraus nicht genau bestimmen kannst, welche Größe Du benötigst, dann verwende einen Vector.<br><br>
    Gruß<br>
    Joche

    Comment


    • #3
      Hi Gregory,
      <p>ein Array hat immer eine feste unveränderbare Länge.
      Die Anweisung String[][] arr=new String[5][2] erzeugt also ein Array mit fünf Array-Referenzen, die jeweils auf ein Array mit 2 Strings, verweisen.
      <p>
      new [5][] erzeugt ein Array mit Referenz auf 5 Strings auf ein nicht initialisiertes Array, mach also keinen Sinn.
      <p> Nimm doch einfach anstelle des Arrays einen java.util.Vector.
      <pre>
      Vector[] varr = new Vector[5]; //Array für 5 Vectoren
      varr[0] = new Vector();
      ...
      </pre>
      <p>Vielleicht hilft auch folgendes Beispiel:
      <pre>
      public class Test1 {
      /**
      * Arrays können immer nur Elemente eines Typs aufnehmen und haben eine feste Länge.
      * Die Länge eines Arrays muss beim Anlegen entweder durch eine bestimmte Anzahl Initialwerte
      * oder durch eine explizite Grössenangabe bestimmt werden.
      */
      public static void main(String[] args) {

      int[][] iarr;

      System.out.println("\nArray [2][3]");
      iarr = new int[2][3]; //int-Array Größe 2 von Int-Array Größe 2
      System.out.println(iarr.length); //Größe 2
      System.out.println(iarr[0].length); //Größe 3
      System.out.println(iarr[1].length);
      //iarr zeigt auf ein Array mit 2 Referenzen, die beide auf ein Array von 3 int Werten zeigen
      iarr[0][0] = 00;
      iarr[0][1] = 01;
      iarr[0][2] = 02;
      iarr[1][0] = 10;
      iarr[1][1] = 11;
      iarr[1][2] = 12;
      for (int i=0; i<2; i++) {
      for (int j=0; j<3; j++) {
      System.out.print("[" + i + j + "]=" + iarr[i][j] + ", ");
      }
      }

      System.out.println("\nArray [2][0]");
      iarr = new int[2][0]; //int-Array Länge 2 von Array Größe 0
      System.out.println(iarr.length); //Größe 2
      System.out.println(iarr[0].length); //Größe 0
      System.out.println(iarr[1].length); //Größe 0
      //iarr zeigt auf ein Array mit 2 Referenzen auf ein Array der Größe 0
      //es kann also nichts gespeichert werden. Diese Definition macht keinen Sinn.
      //Die folgende Zeile wirft eine ArrayIndexOutOfBoundsException
      //iarr[0][0] = 00;

      System.out.println("\nArray [2][]");
      iarr = new int[2][]; //int-Array Größe 2 von nix
      System.out.println(iarr.length); //Größe 2
      //iarr zeigt auf ein Array mit 2 nicht initialisierten Referenzen (null)
      //Die folgende Zeile wirft eine Exception
      System.out.println(iarr[0].length); //NullpointerException
      }
      }
      </pre>
      Gruss Gerhar

      Comment

      Working...
      X