Java |
29.03.2013, 15:22 | Auf diesen Beitrag antworten » | ||||||||||||
java21 | Java Meine Frage: Hallo ich stecke gerade bei einer Programieraufgabe fest wo ich probleme hab: Erstellen Sie dann eine Klasse LetterCounter und löschen Sie im Quelltext alles zwischen public class LetterCounter { und der schließenden geschweiften Klammer. Nach diesen Vorarbeiten können wir beginnen. Ihre Klasse soll Folgendes enthalten: ? eine Objektvariable text vom Typ String, ? einen Konstruktor, der einen Parameter vom Typ String erwartet und die Objektvariable text damit initialisiert (wenn Sie den Parameter sinnvollerweise auch text nennen, benötigen Sie das Schlüsselwort this, um die Objektvariable anzusprechen!), ? eine Methode int count(char letter) (Details siehe unten). Die Methode count soll alle Vorkommen des übergebenen Buchstaben letter im String text zählen und als Ergebnis zurückgeben. Dazu müssen Sie den String text Zeichen für Zeichen durchgehen; Sie benötigen also eine for-Schleife. Ähnlich wie bei Arrays ist der Index des ersten Zeichens 0, die Länge des Strings text liefert text.length() (im Gegensatz zu Arrays mit Klammern). Da Sie etwas zählen wollen, brauchen Sie außerdem eine Zählvariable, die mit 0 initialisiert wird. In der Schleife vergleichen Sie jeweils das i-te Zeichen (text.charAt(i)) mit letter und erhöhen entsprechend die Zählvariable um 1. Nach der Schleife geben Sie den Wert dieses Zählers mittels return zurück. Achten Sie der Klasse und allen enthaltenen Methoden auf angemessene Javadoc-Kommentare mit den entsprechenden Variablen (@author, @version, @param, @return. . . )! Mein Ansatz: public class LetterCounter { String text; public LetterCounter(String text){ string = this.text; } public void int count (char letter) { for( int i = 0; i< text.length(); i++) { } } } Jetzt stecke ich irgendwie fest. Was kann ich jetzt bei dem letzten Teil der Aufgabe machen? Ich weiss gar nicht was ich da machen soll? Das wird mir überhaupt aus der Aufgabe nicht klar? Meine Ideen: gepostet |
||||||||||||
|
|||||||||||||
29.03.2013, 16:35 | Auf diesen Beitrag antworten » | ||||||||||||
eulerscheZahl | Die Variable text hast du ja schon. Den Konstruktor kriegst du so hin:
Und das Zeichenzählen: Wir brauchen eine Variable, in der die Anzahl der Treffer gespeichert wird, die muss noch vor der Schleife defeniert werden und mit 0 initialisiert (da wir noch kein Zeichen gefunden haben) Innerhalb der Schleife wird dann das Zeichen an Stelle i mit dem zu suchenden verglichen, gegebenenfalls das Ergebnis erhöht:
das passt so nicht: void heißt, dass die Funktion keinen Rückgabewert hat, int sagt, dass ein int zurückgegeben wird. Ja, was denn nun? int natürlich, wir wollen ja die Trefferzahl mitteilen -> void muss raus. |
||||||||||||
29.03.2013, 17:51 | Auf diesen Beitrag antworten » | ||||||||||||
java21 | Ich verstehe nur den letzten teil nicht erg++. Warum wird das so gemacht , das verstehe ich auch an meiner musterlösung nicht. Kannst du mir das bitte erklären? |
||||||||||||
29.03.2013, 18:01 | Auf diesen Beitrag antworten » | ||||||||||||
eulerscheZahl | Ich nehme mal an, deine Musterlösung sieht in etwa so aus:
Ich mache mal ein Beispiel: text = "java" letter ='a' Zu Beginn haben wir 0 Treffer. Dann wird der string Zeichen für Zeichen durchgegangen, an Stelle 0 ist ein 'j'. 'j' ist nicht 'a', also passiert gar nichts. Gehen wir weiter zum nächsten Zeichen: 'a' == 'a', also erg++. Das bewirkt, dass erg um eins erhöht wird -> neuer Inhalt:1. Beim 'v' passiert wieder nichts, beim zweiten 'a' ist die Bedingung wieder erfüllt, also erneut erg++. Auf den alten Wert(=1) wird 1 addiert, erg ist jetzt 2. Der string wurde jetzt komplett durchlaufen, in der Variablen erg steht 2. Mit return erg wird diese 2 zurückgegeben, in "java" sind 2 'a' zu finden. |
||||||||||||
Anzeige | |||||||||||||
|
|||||||||||||
29.03.2013, 21:09 | Auf diesen Beitrag antworten » | ||||||||||||
java21 | Ab jetzt wird's ein wenig klarer . Danke eulersche Zahl |
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
|
Die Neuesten » |
|