For-Schleife will nicht oder ein anderer Fehler

Sibylle

Mitglied
Guten Tag,

mein allererstes Progrämmlein in Java mit einer For-Schleife geht schief, dh das Ergebnis ist na ja ...


String eingabetext, eingabezeichen;
String c;
int zaehler = 0;
int lv = 0;
int laenge;

eingabetext = tfeingabetext.getText();
eingabezeichen = tfeingabezeichen.getText();

laenge = eingabetext.length();
tflaenge.setText(String.valueOf(laenge));

for (lv = 0; lv < laenge; lv++)
{
c = eingabetext.substring(lv);
if (c.equals(eingabezeichen))
zaehler = zaehler + 1;
}
tfanzahl.setText(String.valueOf(zaehler));


Gibt man als Eingabetext „Schwierigkeiten mit Java“ ein und als Eingabezeichen ein „a“, so soll als Ergebnis 2 angezeigt werden.
Dazu nun 2 Fragen:
a. woran liegt es, dass das richtige Ergebnis nicht erscheint?
b. Wie kann man in der Schleife, den Inhalt der Variablen im Einzelschritt kontrollieren?

Über Hilfen würde ich mich sehr freuen.

Viele Grüße

Sibylle
 

eRaaaa

Top Contributor
Problem liegt wohl eher daran, dass du versuchst mit substring und equals das umzusetzen..

Was du da prüfst ist:

Schwierigkeiten mit Java == a ?
chwierigkeiten mit Java ==a ?
hwierigkeiten mit Java ==a ?
usw.
D.h. in diesem Fall ist das genau nur einmal true, da Java halt ganz hinten ein a hat, sonst wäre es wohl immer 0 :)

Wieso machst du es denn nicht so wie es in der Aufgabenstellung beschrieben ist? ;/
 

Sibylle

Mitglied
Hallo eRaaa,


vielen Dank für Deine Antwort.

Nach Änderung der Zeile

c = eingabetext.substring(lv);

in folgende Zeile

c = eingabetext.substring(lv,lv+1);

funktioniert es, hoffentlich auch bei intensiveren Tests.

Noch ist mir nicht klar wie man Zeichen für Zeichen aus einer Zeichenkette in eine Stringvariable extrahiert. Verrätst Du mir eine Lösung?

Und als Anfängerin wäre es sehr hilfreich zu wissen, wie man in Java im Einzelschritt testen kann oder gibt es das nicht in Java?

Findest Du die Zeit für eine kurze Antwort?
Dank im Voraus.

Gruß
Sibylle
 

eRaaaa

Top Contributor
Naja, also eine Lösung hattest du ja eig. schon, weiß gar nicht wieso du davon jetzt abschweifst? :D
Java:
		String s ="Hallo Welt";
		System.out.println(s.length()-s.replace("l", "").length());

Ansonsten kann man sich halt mit charAt(index) den Character an der Position index holen

Java:
		String s ="Hallo Welt";
		char c = 'l';
		for (int i = 0; i < s.length(); i++) {
			if(s.charAt(i) == c){
				//hochzaehlen deinen zaehler
			}
		}

Und als Anfängerin wäre es sehr hilfreich zu wissen, wie man in Java im Einzelschritt testen kann oder gibt es das nicht in Java?

KLar, mit einem Debugger. Benutzt du Eclipse oder Netbeans o.ä.? Dann sind die dort schon integriert..ansonsten bei so Kleinigkeiten könnte man auch einfach paar Ausgaben einbauen (System.out.println(...))..aber das hast du nicht von mir :)
 

Sibylle

Mitglied
Hallo Basti,

ich danke für die Tipps, die sehr hilfreich sind. charAt muss ich mir merken.

So nun ist für heute Schluss mit der Fragerei. Bin ein gutes Stück weiter gekommen.

Prima. Danke.

Einen schönen Abend.

Gruß

Sibylle
 
S

SlaterB

Gast
solche schrecklichen Kommentare bitte vermeiden,
10-60 Min. nach dem letzten Posting evtl., aber selbst dann eigentlich nur wenn man z.B. gut im Thema mitgeholfen hat

aber einen schon längst vergrabenen Thread wieder hervorzuholen, besonders bei einem ganz neuen User, der seit dem nichts mehr geschrieben hat, mit einiger Wahrscheinlichkeit also eh nie wieder vorbeikommt, das ist schon gehoben störend

markiere ich jetzt mal
 

Neue Themen


Oben