Feldname von Laufvariable abhängig machen
michael80
- java
0 Daniel Thoma0 michael80
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
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
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
Hallo michael80,
Dann initialisiere den Array doch dann, wenn Du die größe weißt:
Object[] feld = new Object[n];
Grüße
Daniel
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
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
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