# charakter in einem string finden



## shino (8. Dez 2009)

hi zusammen.
ich hab diese routine gebastelt, um einen charakter in einem string zu finden. 


```
public static int findChar(String s, char c) {
for (int i=0; i<s.length(); ++i)
if (s.charAt(i) == c)
break;
return i;
}
```

jedoch hats hier wohl fehler, die ich aber nicht finde? ich seh nicht, was hier nicht stimmen soll? das programm läuft doch jeden char auf dem string durch und schaut, obs der char ist und wenn ja, dann gibt er die position aus. aber irgendwie hats wohl doch fehler drin?


----------



## eRaaaa (8. Dez 2009)

i gibts doch nach der schleife garnicht mehr:

probiers mal so

```
public static int findChar(String s, char c) {
	int i;
	for (i = 0; i < s.length(); ++i)
	    if (s.charAt(i) == c)
		break;
	return i;
    }
```

p.s.: diese funktion gibts doch aber schon, oder sollst du die nachbauen? 

gruß 

/edit: achja, und was ist wenn der buchstabe garnicht drin vorkommt?


----------



## javimka (8. Dez 2009)

Dieser Code compiliert ja wahrscheinlich gar nicht erst. Lösche das break, dann funktionierts.


----------



## shino (8. Dez 2009)

ja ich soll die funktion nachbauen, sonst hätt ich das ganze natürlich in der API nachgeschaut  
ach, das mit dem i war ja eigentlich logisch, dumm das man da nicht selbst drauf kommt  

hmm, warum sollte das break stören? muss ja meiner ansicht da sein, da ansonsten die for-schleife nicht aufhört?

hab noch ne frage, was ist der unterschied ob ich jetzt ++i oder i++ benutze?


----------



## mvitz (8. Dez 2009)

naja, anstelle von break könntest du doch auch direkt return i schreiben, dann bist du ja beim ersten Treffer auch aus der for-Schleife draußen.


----------



## eRaaaa (8. Dez 2009)

shino hat gesagt.:


> hmm, warum sollte das break stören? muss ja meiner ansicht da sein, da ansonsten die for-schleife nicht aufhört?



bei einem return, wird die komplette methode beendet, also auch deine schleife 



```
public static int findChar(String s, char c) {
	for (int i = 0; i < s.length(); ++i) {
	    if (s.charAt(i) == c) {
		return i;
	    }
	}
	return -1;
    }
```




> hab noch ne frage, was ist der unterschied ob ich jetzt ++i oder i++ benutze?



in deinem fall, garkeinen 

ansonsten:
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 2.5 Ausdrücke, Operanden und Operatoren


----------



## shino (8. Dez 2009)

ok danke  hat alles super geklappt  
danke für die mega schnelle antwort.


----------

