Anzahl der Einträge aus Dokument lesen

Frema

Mitglied
Hallo,

Ich mache gerade eine Aufgabe und komme nicht weiter.
Es geht dabei darum, dass man ein Bibliothekensystem erweitern soll (speichern laden ändern erstellen)
Jetzt habe ich Store und Load und addEntry und getEntry soweit implementiert, es funktioniert jedoch noch nicht meines wissens muss ich noch getNumberOfEntries implementieren. Dabei muss ich aus einem Dokument die Anzahl der Einträge auslesen, allerdings weiß ich nicht wie das geht... kann mir bitte jemand helfen?
Das War meine Idee (funktioniert aber nicht)

Java:
 public static boolean getNumberOfRentals(String filename) throws ApplicationException, IOException {
		int eintraege;
			RentalEntryIO.open(filename);
        ArrayList s = RentalEntryIO.ausleihliste; 
		    while((s = RentalEntryIO.get()) != null) { 
		    	s ++;
		    	System.out.println(); 
		    }
		    RentalEntryIO.close();
	}
 

M_Schaffrath

Aktives Mitglied
Ich habe das Gefühl, du weißt nicht so wirklich, was du da eigentlich machst, denn der Code kann so an mehreren Stellen vom Prinzip her gar nicht funktionieren.

Warum gibt die Methode einen Wahrheitswert zurück? Was macht die Variable
Code:
eintraege
? Was wird dem Objekt
Code:
s
da zugewiesen? Und was macht die Klasse RentalEntryIO überhaupt so alles?

Vielleicht solltest du erst einmal Schritt für Schritt durchgehen, was da eigentlich passieren soll. Dann ist es relativ leicht, es in Java umzusetzen.
 

Frema

Mitglied
ok... das hilft mir nun nicht wirklich weiter... eigentlich hatte ich gedacht, die Variable s könnte für die Strings in der Datei Stehen... und wenn ich dann immer einen dazu zähl, bis das Dokument null ist, dann habe ich am Ende die anzahl der Einträge... ok. boolean war noch aus früheren versuchen, hab ich vergessen raus zu machen habs durch void ersetzt. sorry...
 

Frema

Mitglied
Ich habe in einer klasse (RentalEntryIO) die Liste

Java:
public static ArrayList ausleihliste = new ArrayList();
und in der Klasse Application ist das getNumberOfRentalEntries
wäre dann folgendes richtig:

Java:
 public static ArrayList ausleihliste = new ArrayList();
	public static void getNumberOfRentals(String filename) throws ApplicationException, IOException {
	return ausleihliste.size; 
   }
geht aber nicht...
 

M_Schaffrath

Aktives Mitglied
Code:
.size()
ist ein Methodenaufruf und benötigt als solcher zwingend die Klammern dahinter.

Allerdings scheint mir der Code immer noch ein wenig wirr zu sein. Bei der Methode
Code:
.getNumberOfRentals()
wird weder der String-Parameter verwendet, noch die Exceptions geworfen. Dafür versuchst du, einen integer-Wert zurückzugeben, obwohl das
Code:
void
vor dem Methodennamen besagt, dass es keinen Rückgabewert gibt.
Nirgendwo in dem Code werden Einträge in die ArrayList gesetzt, selbst wenn das irgendwie laufen sollte, wird
Code:
ausleihliste.size()
immer 0 zurückgeben.

Ich glaube, du hast weder eine genaue Vorstellung, was du da machen sollst, noch, wie Java als Sprache "funktioniert". Willst du nicht erst einmal in eigenen Worten, ohne Programmcode, sagen, wie du vorgehen willst, bevor du da weiter herumstocherst?
 

Frema

Mitglied
Jaa das will ich :)
Also im Prinzip müsste das Programm die Liste aufmachen reinschauen, wie viele einträge da drin sind und dann so lange eines dazuzählen bis nichts mehr da ist (also bis null )oder denke ich da zu kompliziert?
 

M_Schaffrath

Aktives Mitglied
Die Frage ist ja, wie die Einträge überhaupt vorliegen. Am Anfang hast du von einem "Dokument" geredet, bedeutet das, dass es eine Datei mit Daten gibt, die man einzeln einlesen muss? Oder gibt es ein Formular, in dem alle Daten für ein neues Buch erfasst werden, bevor es abgelegt wird? Oder gibt es irgendwo eine fertige ArrayList mit Büchern, die man verwenden kann?

Was wird da überhaupt gezählt? Die Anzahl der vorhandenen Bücher? Die der verliehenen Bücher?

Erzähl doch vielleicht erst einmal, was gegeben ist, denn zumindest ich habe Schwierigkeiten, die Aufgabenstellung überhaupt zu verstehen.
 

Frema

Mitglied
Oh... Du hast recht ich bin schon wieder zu schnell... also Aufgabenstellung:


...







laden (load) und Speichern(store) und addEntry habe ich nun schon implementiert. Die Dateien stehen nun in einer Textdatei (oder sollen zumindest da reingeschrieben werden) die heißt ausleihtext.txt

Einen Eintrag habe ich auch schon selbst reingeschrieben (manuell direkt) um zu testen, ob die ausgabe in der Konsole funktioniert. Das tut auch soweit, nur in der Benutzeroberfläche tut sich noch nichts.
Dazu muss ich denk ich mal die NumerOfRentalEntries implementiern...
ist nun soweit klar was ich meine?
 
Zuletzt bearbeitet:

Frema

Mitglied
[XML]public static void load()throws IOException, ApplicationException{

...

return true;
}[/XML]
 
Zuletzt bearbeitet:

M_Schaffrath

Aktives Mitglied
Hmm, wann gibt die zweite Methode denn "false" zurück? Und warum haben die beiden Methoden unterschiedliche Rückgabetypen?

Ich habe keine Ahnung, wie diese RentalEntryIO-Klasse funktionieren soll, aber gehen wir einmal davon aus, dass sie ungefähr das tut, was ihre Methoden andeuten...
Dann hast du ja schonmal eine Methode, die die Einträge einzeln aus der Datei ausliest und in die Liste stopft. Dann müsstest du ja im Prinzip nur zählen, wie oft das passiert, dann wüsstest du, wie viele Einträge in der Datei sind.
 

ARadauer

Top Contributor
zb so...

Java:
public static int getNumberOfRentals(String filename) throws ApplicationException, IOException {
        
        RentalEntryIO.open(filename);
        int count = 0;
        String s;
        while((s = RentalEntryIO.get()) != null) { 
            count++;
        }
        RentalEntryIO.close();
        
     return count;
    }
 

Frema

Mitglied
Dankee :)
Das ist jetzt aber fast das Gleiche wie das das ich oben habe, nur ohne s, oder?
Da kommt eine Fehlermeldung in der Konsole The method getNumberOfRentals(String) in the type Application is not applicable for the arguments ()
 
Zuletzt bearbeitet:

ARadauer

Top Contributor
tja was wird das wohl heißen? Im Grunde ist es einfach, nimm dir mal 2 Stunden Zeit und les dich in die Grundlagen ein...
 

M_Schaffrath

Aktives Mitglied
Dann musst du dir ansehen, wie du die Methode
Code:
.get()
aufrufen musst. Entweder im Quelltext, wo sie definiert ist, oder, wenn der nicht zur Verfügung steht, in der Schnittstellenbeschreibung, die es in diesem Fall geben sollte.
 

Neue Themen


Oben