michael80: Feldname von Laufvariable abhängig machen

Hi Leute

Ich möchte eine Feld in Java aufschlüsseln, so das jede Zeile dieses Feldes in einem neuen Feld steht.

Dabei ist jedoch zuvor nicht bekannt, wie viele Zeilen das Ausgangsfeld besitzt.

--
int n=<Zahl>;
for (int i=0; i<n; i++){
  double sub_feld(+i) = new double [i][2*n];
}
--

Ich möchte also, das bei n=3 ich drei Felder bekomme, die
sub_feld0
sub_feld1
sub_feld2

heißen. Wenn n=4, dann eben noch ein Feld mehr -> sub_feld3

Wie kann ich die Namen des Feldes von "i" abhängig machen?

Micha

  1. Hallo michael80,

    Wenn ich Dich richtig verstanden habe, willst Du ein Array, dass Du beliebig vergrößeren kannst.
    Da solltest Du Dir java.util.ArrayList ansehen, damit kannst Du dann sowas machen:

    List subfeld = new ArrayList();
    int n = 4;
    for(int i = 0; i < n; i++) {
       subfeld.add(new double[i][2*n]);
    }

    In Java 1.5 solltest Du List<double[][]> = new ArrayList<double[][]> schreiben, damit Du Dir beim Auslesen das Casten spaarst und der Compiler entdeckt, wenn Du ein Objekt vom falschen Typ in der Liste ablegst willst.

    Grüße

    Daniel

    1. Hallo Daniel

      Also Die Größe des Feldes will ich nachher nicht mehr verändern.

      Das Problem: ich will eine Positionsbestimmung machen, die von GPS abhängt. Dabei ist die anzahl der empfangenen Satelliten nicht immer gleich.

      Das heißt. an dem einen Tag habe ich 5 und am anderen 8.
      ich weiss aber vorher, wie viele Sats ich empfangen habe.

      Heißt also, wenn ich am 1. Tag meine Messung auswerten will, dann ist n=5;

      Bei zweiten Tag ist n=8;

      n muss also nur insofern variable sein, das es jeweils beim Programmstart weiss, wie viele Satelliten habe ich ... also lege ich genau so viele Felder an.

      Weisst wie ich meine?

      Micha

      1. Hallo michael80,

        Dann initialisiere den Array doch dann, wenn Du die größe weißt:

        Object[] feld = new Object[n];

        Grüße

        Daniel

        1. Ich glaub Du musst noch ein wenig Gedult haben mit mir, so viel Ahnung habe ich noch nicht in Java...

          --
          import java.io.*;
          import Prog1Tools.*;
          import java.util.ArrayList;
          public class inverse1 {

          public static void  main (String[] args) {
             int n= <zahl>;
             List gauss_ = new ArrayList();
             for(int i = 0; i < n; i++) {
                gauss_.add=(new double[i][2*n]);
              }
            }
          }
          --
          Die Felder sollen also nachher gauss_0, gauss_1,... gauss_n heißen.

          Wenn ich es so mache, bekomme ich einen Fehler beim comilieren.
          inverse1.java: 16 cannot reslve symbol
          symbol : class List
          location: class invers1
             List gauss_ = new ArrayList();
             /\   An dieser Stelle zeigt er Ihn an (JavaEditor)

          vll noch ein kleiner Tipp für ein Anfänger ;-)
          Micha

          1. Hallo michael80,

            Die Felder sollen also nachher gauss_0, gauss_1,... gauss_n heißen.

            Das geht nicht. Entweder nimmst Du einen Array und kannst dann mit gauss[0] gaus[1] ... zugreifen oder eine Liste und kannst mit gaus.get(0) gaus.get(1) ... zugreifen

            Du hast das Interface List nicht implementiert. Du kannst natürlich das Feld auch mit ArrayList deklarieren. Ich deklariere Felder (zumindest nicht private oder lokale) aber lieber mit dem Interface, damit ich die implementierende Klasse problemlos austauschen kann.

            Grüße

            Daniel

            1. Die Felder sollen also nachher gauss_0, gauss_1,... gauss_n heißen.
              Das geht nicht.

              Gut, dann beantwortet das ja meine Frage schon. Die Werte stehen ja bereits in einem Array, auf das ich auch zugreifen kann. Aber um damit zuarbeiten, wäre es leichter gewesen, eine Dimension weniger zuhaben, in dem ich die Zeilen der Ausgangsmatrix jeweils in neue Arrays auslesen lasse - wobei mir eben die Anzahl der Zeilen variabl ist und von daher eben auch genau soviele SubArrays benötigt werden.

              Trotzdem Danke Daniel

              Micha