ArrayList Datenbank [i]??

Shin_Sello

Mitglied
Hey, hallo erstmal
Ich bin neu im Forum also bitte nicht böse sein ^.^
Ich mache grade ArrayList Datenbanken, mit arrays weiß ich ja wie das geht...

Und ich hätt ne kleine Frage, die ich leider nicht mit der SuFu gefunden hab(wusste auch nicht genau wie ichs suchen soll)

Hier die Frage:
Ich gebe mal die komplette Datenbank aus, mit Arrays einfach:
Code:
               for (int i = 0, i <Fahrzeugliste.length;i++){
                       if(Fahrzeugliste[i] != null){
                               System.out.println(Fahrzeugliste[i].toString);
                       }
               }

Aber im Arraylist weiß ich leider nicht ganz wie das geht, ich hatte es so ausprobiert:
Code:
public static void gibausDB() {
		for (int i = 0; i < Fahrzeugliste.size(); i++)
			System.out.println(Fahrzeugliste.toString());
	}
Bei der Ausgabe(nachdem ich was hinzugefügt hab) funktioniert es nicht...

Hilfe bitte


MfG Shin ^^
 
Hm, irgendwie gehts noch immer nicht...
Hier mal der ganze add und ausgabeCode:
Code:
public static void addFahrzeug(Fahrzeug f){
			Fahrzeugliste.add(f);
		}

	public static void gibausDB() {
		for (int i = 0; i < Fahrzeugliste.size(); i++)
			System.out.println(Fahrzeugliste.get(i).toString());
	}

Code:
case 1:
			System.out.println("Möchten sie ein Auto(1), ein Motorrad(2) oder ein LKW(3) hinzufügen?");
			int eingabeint = Integer.parseInt(sc.nextLine());
			if(eingabeint == 1){
			System.out.println("Geben sie den Namen des Herstellers ein");
			String hersteller = sc.nextLine();
			System.out.println("Geben sie die maximale Leistung in ps an.");
			int leistung = Integer.parseInt(sc.nextLine());
			System.out.println("Geben sie die maximalen Km/h an.");
			int maxkmh = Integer.parseInt(sc.nextLine());
			System.out.println("Geben sie die Anzahl der Reifen an.");
			int reifen = Integer.parseInt(sc.nextLine());
			System.out.println("Geben sie die Anzahl der Türen an.");
			int AnzahlderTueren = Integer.parseInt(sc.nextLine());
			Datenbank.addFahrzeug(new Auto(hersteller, leistung, maxkmh, reifen, AnzahlderTueren));}
			
			else if(eingabeint == 2){
			System.out.println("Geben sie den Namen des Herstellers ein");
			String hersteller = sc.nextLine();
			System.out.println("Geben sie die maximale Leistung in ps an.");
			int leistung = Integer.parseInt(sc.nextLine());
			System.out.println("Geben sie die maximalen Km/h an.");
			int maxkmh = Integer.parseInt(sc.nextLine());
			System.out.println("Geben sie die Anzahl der Reifen an.");
			int reifen = Integer.parseInt(sc.nextLine());
			Datenbank.addFahrzeug(new Motorrad(hersteller, leistung, maxkmh, reifen));}
			
			else if(eingabeint == 3){
			System.out.println("Geben sie den Namen des Herstellers ein");
			String hersteller = sc.nextLine();
			System.out.println("Geben sie die maximale Leistung in ps an.");
			int leistung = Integer.parseInt(sc.nextLine());
			System.out.println("Geben sie die maximalen Km/h an.");
			int maxkmh = Integer.parseInt(sc.nextLine());
			System.out.println("Geben sie die Anzahl der Reifen an.");
			int reifen = Integer.parseInt(sc.nextLine());
			System.out.println("Geben sie die Anzahl der Türen an.");
			int AnzahlderTueren = Integer.parseInt(sc.nextLine());
			System.out.println("Geben sie das maximal Gewicht der Ladung in kg an.");
			int maxkgLadung = Integer.parseInt(sc.nextLine());
			Datenbank.addFahrzeug(new LKW(hersteller, leistung, maxkmh, reifen, AnzahlderTueren, maxkgLadung));
			System.out.println("Das Fahrzeug wurde erfolgreich hinzugefügt!");
			}
			printmenue();
			break;
		case 2:
			Datenbank.gibausDB();
			break;
 
Hm, also wenn ich ein Fahrzeug hinzugefügt habe und dann auf die Ausgabe gehe, gibt es mir nix aus.

Ja ich habe die toString Methode in allen Klassen überschrieben.

mfG Shin

Edit:
Damit es keine Missverständnisse gibt, es gibt mir beim adden schon alles aus, aber bei dem ausgeben der ArrayList nicht.

MfG
noch ein edit 😀 :
Ich hab den Fehler gefunden...
Es ist eigentlich ziemlich peinlich...
Ich hab die {} bei der for schleife vergessen -.-

Nja, aber danke für die Hilfe

MfG Shin
 
Zuletzt bearbeitet:
Ich hab mir gedacht es sei unnötig einen neuen Thread aufzumachen, also hab ichs hier gepostet...

Mein Code:
Code:
public static void IndexAusgabe(int i){
		System.out.println(Fahrzeugliste.get(i));

Code:
System.out.println("Geben Sie den Index ein.");
			int i = Integer.parseInt(sc.nextLine());
			System.out.println("Das Fahrzeug an der Stelle " + i + " ist " + Datenbank.IndexAusgabe(i));
			break;

Ich wollte nach der eingabe einer Zahl(der Nummer im Index) das dort gespeicherte Objekt ausgeben...

Es sagt mir nur:
The operator + is undefined for the argument type(s) String, void

Hilfe bitte ;(

MfG
 
In deiner Methode
Code:
public static void IndexAusgabe
gibst du ja auch gar nicht das Fahrzeug zurück(sondern nichts - void!!), sondern gibst es ja einfach nur aus!

Du musst dich entscheiden was du nun machen willst, ausgeben oder zurückgeben.!

Du könntest die Methode umändern zu so etwas wie
Code:
getVehicle(int index) return Fahrzeugliste.get(index);

Oder eben in deinem zweiten Code nur
Java:
System.out.print("Das Fahrzeug an der Stelle " + i + " ist ");
Datenbank.IndexAusgabe(i);

so halt...
 
Sorry erstmal das ich so nervig bin ^^

Aber ich hätt noch ein Problem...

Alsooo, ich habe versucht meine Datenbank in eine Textdatei zu speichern und dann zu lesen.

Das speichern funktioniert...

Aber wenn ich es lesen will und dann die DB ausgebe zeigt es mit nix an...

Hier mal der Code:

Code:
public static void FileLesen() throws FileNotFoundException, IOException {
		try {
			BufferedReader in = new BufferedReader(new FileReader(
					".\\output\\DatenbankFile.txt"));
			boolean istDa = true;
			while (istDa) {
				String s = in.readLine();
				if (s != null) {
					s += in.readLine();
				} else {
					istDa = false;
					in.readLine();
				}
			}
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

Und hier aus dem Konsolenmenü der aufruf:
Code:
try {
				Datenbank.FileLesen();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

Danke im Vorraus ^^


MfG Shin
 
Aber wenn ich es lesen will und dann die DB ausgebe zeigt es mit nix an...

Was soll es auch anzeigen? Du hast dort weder ein System.out, noch speicherst du die eingelesenen Daten irgendwo?! Du machst ja quasi mit dem gelesenen String nichts...
Java:
				String s = in.readLine();
				if (s != null) {
					s += in.readLine();
Was soll das genau machen? ;/
Wie die Daten jetzt in der Datei stehen hast du auch nirgends erwähnt(oder?)
 
Naja, eigentlich sollte es das ganze nur in die Datenbank einlesen. Mit einer anderen Methode(Ausgabe der Datenbank) sollte die geladene Datei anschaubar sein.

Also, ich habe es gespeichert und jetzt ein Textfile dessen inhalt wie folgt aussieht:
Art des Fahrzeugs: Auto, Hersteller: BMW, Leistung: 100, Maximale Km/h: 10, Anzahl der Reifen: 1, Türen: 2

Wenn ich es aber laden will mit der Methode "FileLesen", und dann ausgeben will mit einer anderen Methode("gibausDB"), dann zeigt es mit nix an, also ist die DB noch immer leer.

MfG Shin
 
Ja, weil du ja auch nirgends Objekte von Fahrzeug/LKW etc. erstellst und diese in der "DB" ablegst? Du liest nur die Datei, das wars. Die fügen sich ja nicht von selbst in deine DB hinzu wenn du das nicht programmierst 🙂
Da fehlt ja also irgendwas in der Form von Datenbank.addFahrzeug(new Fahrzeug(gelesenerStringDerEvtl.VorherGesplittetWerdenMuss));

Hoffe ich hab dich jetzt auf die richtige Spur geleitet :>

Wenn in der Textdatei keine lesbaren Strings enthalten sein müssen, wäre es evtl. eine weitere Möglichkeit die Liste einfach zu serialisieren....
 
Ah, ich verstehe der String Tokenizer...

Ich hab mal einen erstellt, dass ganze schaut jetzt so aus:

Java:
public static void FileLesen() throws FileNotFoundException, IOException {
		try {
			BufferedReader in = new BufferedReader(new FileReader(
					".\\output\\DatenbankFile.txt"));
			boolean istDa = true;
			while (istDa) {
				String s = in.readLine();
				if (s != null) {
					s += in.readLine();
					StringTokenizer st = new StringTokenizer(s);
				     while (st.hasMoreTokens()) {
				     }

				} else {
					istDa = false;
					in.readLine();
				}
			}
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

Ich weiß aba nicht so ganz wie ich das in eine Fahrzeug umwandle...

Ich bräuchte keinen direkten Code, aber vlt noch ein Tipp wäre gut 🙂

MfG Shin
 
Ich bräuchte keinen direkten Code, aber vlt noch ein Tipp wäre gut 🙂

Wüsste nicht was man da jetzt noch weiter als Tipp geben kann ausser dass du eben deinen String auseinander nehmen musst und daraus ein Objekt erstellen musst(dein Format(String) wie du das Fahrzeug speicherst ist da schon ziemlich eklig(aber natürlich auch machbar) und erleichtert die Sache nicht wirklich. Hättest du ein Format wie:
Auto, BMW,100, 10, 1, 2
)
wäre das sicherlich etwas leichter. Ansonsten wie schon gesagt: serialisiere die Liste einfach, dann ließe sich diese auch leicht wieder 1:1 deserialisieren, aber ka, ob die Datei eben lesbar sein soll!

Hier wird auch niemand mehr reinschauen wenn der Thread als "Erledigt" markiert ist.
Vllt wäre es gut, einen neuen zu erstellen indem du genau erklärst wie deine Datei aussieht, wo dein Problem ist, was du machen willst etc.
Dann wird das kein Gespräch nur zwischen uns 🙂
 

Neue Themen


Zurück
Oben