Java

Neue Frage »

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
 
Auf diesen Beitrag antworten »
eulerscheZahl

Die Variable text hast du ja schon.
Den Konstruktor kriegst du so hin:
code:
1:
2:
3:
public LetterCounter(String text) {
this.text = text;
}

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:
code:
1:
2:
3:
for(int i = 0; i < text.length(); i++)
    if(letter == text.charAt(i))
        erg++;


Zitat:
public void int count (char letter)

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.
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?
Auf diesen Beitrag antworten »
eulerscheZahl

Ich nehme mal an, deine Musterlösung sieht in etwa so aus:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class LetterCounter {
    String text;
    
    public LetterCounter(String text) {
        this.text = text;
    }
    
    public int count(char letter) {
    	int erg = 0;
    	for(int i = 0; i < text.length(); i++)
    		if(letter == text.charAt(i))
    			erg++;
    	return erg;
    }
}


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.
 
Auf diesen Beitrag antworten »
java21

Ab jetzt wird's ein wenig klarer . Danke eulersche Zahl
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »