# For-Schleife will nicht oder ein anderer Fehler



## Sibylle (24. Mai 2010)

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 (24. Mai 2010)

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 (24. Mai 2010)

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 (24. Mai 2010)

Naja, also eine Lösung hattest du ja eig. schon, weiß gar nicht wieso du davon jetzt abschweifst? 

```
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


```
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 (24. Mai 2010)

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


----------



## Java-Freak (31. Mai 2010)

thread als erledigt markieren?


----------



## SlaterB (31. Mai 2010)

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


----------



## Java-Freak (1. Jun 2010)

ich werds mir merken


----------

