Hallo Leute,
ich bin dabei ein kleines Übungsprogramm zu schreiben. Es sollen per Tastatureingabe Bücher in einer "Bibliothek" gespeichert werden. Hierfür sind jeweils Buch und Bibliothek als Klassen definiert.
Klasse Book
Klasse Library
Wenn ich nun in meinem Hauptprogramm die verschiedene Bücher eingebe funktioniert soweit alles.
Wenn ich allerdings als letzten Schritt die Liste der Bücher aus der Bibliothek ausgeben lassen möchte, dann bekomme ich 3 mal das gleiche Buch genannt, und zwar das zuletzt eingegebene.
Hier der Code zum Hauptprogramm:
Ich habe das ganze auch mal "hart" programmiert, sprich die Titel und Autoren der Bücher als feste Werte für drei fest angelegte Bücher festgelegt, und dann hat die Array Abspeicherung und Ausgabe problemlos funktioniert.
Bin leider völlig ratlos, woran es liegen könnte.
Vielen Dank für jede Hilfe.
ich bin dabei ein kleines Übungsprogramm zu schreiben. Es sollen per Tastatureingabe Bücher in einer "Bibliothek" gespeichert werden. Hierfür sind jeweils Buch und Bibliothek als Klassen definiert.
Klasse Book
Java:
//Book.java
class Book {
//Attribute der Klasse
String autor;
String titel;
//Methoden der Klasse
void setAutor (String a){
autor = a;
}
void setTitel (String a){
titel = a;
Klasse Library
Java:
public class Library {
//Attribute der Klasse
Book [] Buecher = new Book [3];
int buchEintraege = 0;
int eintragsNummer;
String liste;
String neuerEintrag;
//Methoden der Klasse
void setBook (Book a){
Buecher[buchEintraege] = a;
System.out.println("Das Buch - " + Buecher[buchEintraege].titel + " - wurde erfolgreich angelegt!\n");
buchEintraege = buchEintraege + 1;
}
String getList (){
liste = "";
for (int i = 0; i < buchEintraege; i++){
eintragsNummer = i + 1;
neuerEintrag = (eintragsNummer + ".Eintrag: " + Buecher[i].titel + " von " + Buecher[i].autor);
liste = (liste +"\n" + neuerEintrag + "\n");
}
return liste;
Wenn ich nun in meinem Hauptprogramm die verschiedene Bücher eingebe funktioniert soweit alles.
Wenn ich allerdings als letzten Schritt die Liste der Bücher aus der Bibliothek ausgeben lassen möchte, dann bekomme ich 3 mal das gleiche Buch genannt, und zwar das zuletzt eingegebene.
Hier der Code zum Hauptprogramm:
Java:
//Attribute
Book buch = new Book();
int auswahl = 0;
int buecherZahl = 0;
String liste;
Library bib1 = new Library();
Scanner scanner = new Scanner(System.in);
//Methoden
//Begrüßungsformel
System.out.println("Willkommen in der automatisierten Bibliothek!");
//Switch-Case für Personeninteraktion
while (true){
if (auswahl == 0){
//Startwert 0 lässt Abfrage was passieren soll lassen
System.out.println("Sie haben folgende Optionen: \n1. Ein neues Buch abspeichern. \n2. Die aktuelle Bibliotheksliste ausgeben lassen. \n3. Das Programm beenden. \n\nBitte geben Sie ihre Auswahl mit 1, 2 oder 3 an!");
auswahl = scanner.nextInt (); continue;
}
if (auswahl == 1){
//Prüfen ob Platz in der Bibliothek ist
if (buecherZahl > 2) {
System.out.println("Die Bibliothek ist bereits voll!");
auswahl = 0;
}
else {
System.out.println("Bitte geben Sie den Autor des Buches an!");
String temp = scanner.nextLine ();
buch.setAutor(scanner.nextLine ());
System.out.println("Bitte geben Sie den Titel des Buches an!");
buch.setTitel(scanner.nextLine ());
bib1.setBook(buch);
//Setzt auf Startwert zurück um neue Abfrage zu erzwingen!
auswahl = 0; buecherZahl = buecherZahl + 1;
} continue;
}
if (auswahl == 2){
if (buecherZahl != 0){
liste = bib1.getList();
System.out.println(liste);
auswahl = 0;
}
else { System.out.println("Es sind noch keine Bücher in der Bibliothek enthalten!\n");
auswahl = 0;
}
continue;
}
if (auswahl == 3){
scanner.close();
System.out.println("Das Programm wird beendet. \nVielen Dank für Ihren Besuch und auf Wiedersehen!");
break;
}
if (auswahl > 3) System.out.println("Die Eingabe ist ungültig!\n"); auswahl = 0; continue;
Ich habe das ganze auch mal "hart" programmiert, sprich die Titel und Autoren der Bücher als feste Werte für drei fest angelegte Bücher festgelegt, und dann hat die Array Abspeicherung und Ausgabe problemlos funktioniert.
Bin leider völlig ratlos, woran es liegen könnte.
Vielen Dank für jede Hilfe.
Zuletzt bearbeitet: