# daten in array eintragen



## zerberos (16. Feb 2005)

Hallo,

ich möchte ein program schreiben, wo man 4 werte eingeben kann (datum, kilometer, schnitt, zeit). Hab nen Tipp bekommen, das man die werte am besten in einem array speichert.

Am anfang macht man dann am besten eine eingabe wie viele datensätze man in der art eintragen will

In der art: 

public void eingabe(){

anzahl = IO.readInt("Bitte die Anzahl der einzugebenden Datensätze eingeben: ");

	}  

danach denke ich kommt ne for-schleife. Nur wie geht es dann weiter? Hab noch nie mit arrays gearbeitet. Oder würdet ihr das anders lösen? Die daten sollen so gespeichert werden, das später noch mit ihnen weitergearbeitet werden kann


----------



## Isaac (16. Feb 2005)

Ist eigentlich vollkommen Wurscht wie du die Daten speicherst. Ob nun direkt in einer Variablen wie bei deiner Variable "anzahl" oder in einem Container wie List. Da es nicht warscheinlich ist das du die Daten sortieren willst oder sonst irgendwas schräges anstellen willst tuts auch der eher primitive (im Sinne von wenig zusätzlicher Funktionalität bzw Ballast) Arraycontainer.


----------



## Oskar (16. Feb 2005)

tach

besser wäre ein vector, weil du hier beliebige Objekttypen reinhängen kannst (Strings, Integer, Date) ist geschickter und flexibler
Außerdem gibt es da schon die nötigen Methoden

Die Andere Alternative ist ein Array vom Typ Object da kannst du dann auch alles reinstecken.
Das wird zuerst angelegt und dann musst du es explizit mit der anzahl der benötigten Felder initialisiern (ist also ne recht statische Angelegenheit)
Danch kannst du wirklich mit ner Forschleigt drüber loopen und die einzelnen Felder füllen


```
Object[] myArray ;
myArray = new Object[4];

for (int i = 0; i < myArray.length; i++){
     myArray[i] = //schmeiss irgendwas rein
}
```

So weit so gut hoffe das hilft


----------



## mic_checker (16. Feb 2005)

Warum verwenden noch immer so viele Vector? Schaut euch einfach mal ArrayList/LinkedList an.

Warum schreibst nicht deine eigene Klasse, die die einzelnen Daten aufnehmen kann, also:
- datum, kilometer, schnitt, zeit

Dann kannst immer noch ein Array von Objekten dieser Klasse anlegen, bzw. wenn du das ganze dynamisch in der Anzahl halten willst dann greif z.B. zu ArrayList.


----------



## zerberos (16. Feb 2005)

ok. werd das mal ausprobieren



noch ne frage. welche datentypen verwende ich am besten für ein datum (tt.mm.jjjj und eine zeit (stunde:min:sekunde)


----------



## mic_checker (16. Feb 2005)

Kommt drauf an wie du nachher noch auf die Daten zugreifen willst, am einfachsten wäre sicherlich "String",  aber das ist dir überlassen.


----------



## Oskar (16. Feb 2005)

ansonsten schau doch mal in java.util.Date bzw. java.util.Time (wenn es die gibt) rein.


----------



## zerberos (17. Feb 2005)

also bräuchte nochmal eure hilfe. komm mit den arrays momentan voll nicht klar.

das hab ich bis jetzt:


```
public void eingabe(){
		int anzahl;
		int enummer;
		int datum;
                                float km;
		float schnitt;
		char zeit;
		System.out.println();
		System.out.println();
		System.out.println();
		System.out.println("   Datensätze eingeben    ");
		System.out.println("--------------------------");
		System.out.println();
		anzahl = IO.readInt("Bitte die Anzahl der einzugebenden Datensätze einegeben: ");
		System.out.println();
		System.out.println();
		for (int i=1;i<=anzahl;i++){
		System.out.println("Datensatz "+i+" eingeben");
		datum=IO.readInt("Bitte das Datum eingeben: ");
		km=IO.readFloat("Bitte die Kilometer eingeben: ");
		schnitt=IO.readFloat("Bitte die gefahrene Durchschnittgeschwindigkeit eingeben: ");
		zeit=IO.readChar("Bitte die gefahrene Zeit eingeben: ");
		System.out.println();
		}
		System.out.println();
		enummer= IO.readInt("Um ins Hauptmenü zu gelangen 1 eingeben, zum beenden bitte 2 eingeben: ");
        System.out.println();
        System.out.println();
		switch (enummer){
        case 1: menue(); break;
        case 2: ende();break;
        default: {System.out.println("Falsche Eingabe"); menue();} break;
        }
	}
```

wie schreibe ich jetzt die daten in ein array, so das ich später dann darauf zugreifen kann?


----------



## Wildcard (17. Feb 2005)

Wolltest du das wissen?


```
public void eingabe(){ 
      int anzahl; 
      int enummer; 
      int datum; 
      int [][] daten;
      float km; 
      float schnitt; 
      char zeit; 
      System.out.println(); 
      System.out.println(); 
      System.out.println(); 
      System.out.println("   Datensätze eingeben    "); 
      System.out.println("--------------------------"); 
      System.out.println(); 
      anzahl = IO.readInt("Bitte die Anzahl der einzugebenden Datensätze einegeben: "); 
      
      daten = new int[anzahl][4];
        
      System.out.println(); 
      System.out.println(); 
      for (int i=0;i<anzahl;i++){ 
      System.out.println("Datensatz "+i+" eingeben"); 
      daten[i][0]=IO.readInt("Bitte das Datum eingeben: "); 
      daten[i][1]=IO.readFloat("Bitte die Kilometer eingeben: "); 
      daten[i][2]=IO.readFloat("Bitte die gefahrene Durchschnittgeschwindigkeit eingeben: "); 
      daten[i][3]=IO.readChar("Bitte die gefahrene Zeit eingeben: "); 
      System.out.println(); 
      } 
      System.out.println(); 
      enummer= IO.readInt("Um ins Hauptmenü zu gelangen 1 eingeben, zum beenden bitte 2 eingeben: "); 
        System.out.println(); 
        System.out.println(); 
      switch (enummer){ 
        case 1: menue(); break; 
        case 2: ende();break; 
        default: {System.out.println("Falsche Eingabe"); menue();} break; 
        } 
   }
```


----------



## zerberos (17. Feb 2005)

hmm, kann ich den so später die datensätze nach datum sortieren und abspeichern in ner datei und dann auch noch neue datensätze hinzufügen?



ps: wie gebe ich die daten den am besten aus?


----------



## Guest (17. Feb 2005)

also ich denke der ansatz den ich gewählt habe ist falsch. mit arrays ist nicht die richtige lösung.



also ich will ein programm machen, das folgende funktionen hat:



1) Daten eintragen in eine LISTE

2) liste sortieren und ausgeben

3) einzelne daten aus der liste suchen

4) liste in datei speichern

5) liste aus datei auslesen und und dann weitere datensätze hinzufügen



kann mir einer vielleicht infos geben wie ich ne liste erstelle und dann dort die daten richtig eintrage?


----------



## Wildcard (17. Feb 2005)

Schaust du hier:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html
und hier:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html
Ein Tipp: List ist nur ein Interface, du brauchst aber einen konkreten Typ (Vector, ArrayList, ...)


----------



## zerberos (17. Feb 2005)

ja... danke. ich probier das mal. wenns nicht klappt meld ich mich nochmal


----------

