# : ? Operator -Verständnisproblem



## dehlen (15. Feb 2011)

Kann mir einer diese Zeile Code erklären ?!
for(char i : text.toCharArray())
wieso fehlt da das Fragezeichen einen Operator nur als Doppelpunkt gibts doch nicht oder ? und was macht diese Zeile also toCharArray ist mir klar aber trotzdem den Rest wäre nett wenn mir das mal jmd erklärt

und diese Zeile verstehe ich auch nicht:
count = (count < this.code.length() -1) ? ++count : 0; 
wäre nett wenn sich einer begnadigt ;-)
danke


----------



## XHelp (15. Feb 2011)

Mit dem ternärem Operator hat das rein gar nichts zu tun (nur die Tatsache, dass da rein zufällig auch mal ein Doppelpunkt ist).
Das ist eine for-each Schleife: The For-Each Loop


----------



## dehlen (15. Feb 2011)

Ok danke aber die zweite ist doch dieser :? operator also bitte erklären


----------



## Runtime (15. Feb 2011)

Das:

```
count = (count < this.code.length() -1) ? ++count : 0;
```
ist gleich zu setzten wie das:

```
if(count < this.code.length() -1) { ++count; } else { count = 0; }
```
Also wenn der Ausdruck vor dem Fragezeichen wahr ist, dann wird der Teil zwischen ? und : ausgeführt, sonst der Teil nach :.


----------



## dehlen (15. Feb 2011)

achso ok danke ;-)

und zum ersten:
Wäre das richtig wenn ich sagen würde jeder Buchstabe i wird in input geschrieben?!


----------



## Runtime (15. Feb 2011)

Welches input?


----------



## dehlen (15. Feb 2011)

sry meine text


----------



## Runtime (15. Feb 2011)

Nein, es wird durch das chararray von text iteriert.


----------



## XHelp (15. Feb 2011)

Nein, wäre es nicht. Hast du dir die verlinkte Seite überhaupt angeguckt?


----------



## Final_Striker (15. Feb 2011)

[c]text.toCharArray()[/c] liefert ein char-Array. Die Schleife läuft dann über dieses Array.


----------



## Tomate_Salat (15. Feb 2011)

Wow, das ist echt anstrengend zu erraten was du willst oO.

Lese dir doch einfach den Link von XHelp durch oder probiere es doch einfach aus :-/. 


```
for(char c : "Demo".toCharArray())
    System.out.println(c);
```


```
D
E
M
O
```


----------



## dehlen (15. Feb 2011)

ja also z.B bei
String a;
char c[];
a = "Demo";
c = a.toCharArray(); //jetzt ist c.length = 5 und c[0]= "H", c[1]=A ....
oder nicht ?!


----------



## Runtime (15. Feb 2011)

Fast, c[0] = 'D', c[1] = 'e', c[2] = 'm', c[3] = 'o'


----------



## XHelp (15. Feb 2011)

dehlen hat gesagt.:


> ja also z.B bei
> String a;
> char c[];
> a = "Demo";
> ...



???:L 1. Warum die Länge 5? 2. Wo siehst du denn ein H und ein A in "Demo"?


----------



## dehlen (15. Feb 2011)

oh dachte ich hätte hallo eingegeben 
also übertragen auf mein Problem wäre das dann so:
das char i deklariert eine Variable, die ein Element aus dem Array festhält.
Bei jedem Schleifendurchlauf enthält die Variabel ein anderes Element aus dem Array bis es keine Elemente mehr gibt
und das text.toCharArray 
da wird bei jedem Durchlauf meinem char i das nächste element des Array zugewiesen

jetzt ?!


----------



## Tomate_Salat (15. Feb 2011)

Hier möchte ich nochmal auf das "einfach mal selbst ausprobieren" verweisen.

"Demo" hat die länge 4 und nicht 5 

und woher nimmst du "H","A"?
war ursprünglich vllt HALLO gemeint? das wäre 5 chars lang :-/

*Edit* da habe ich aber sowas von zu lange gebraucht :-/

lese dir den link von XHelp durch, schaue dir mein Beispiel an und probier einfach mal ein wenig selbst etwas aus.


----------



## XHelp (15. Feb 2011)

Ich verstehe zwar nicht ganz den Sinn von deinem Satz (bei toCharArray wird gar nichts dem i zugewiesen), aber es geht wohl in die richtige Richtung.


----------



## ARadauer (15. Feb 2011)

dehlen hat gesagt.:


> und das text.toCharArray da wird bei jedem Durchlauf meinem char i das nächste element des Array zugewiesen


toCharArray macht aus einem String ein char Array...


----------



## dehlen (15. Feb 2011)

achso ok gut dann hab ichs gerafft


----------



## bygones (15. Feb 2011)

Seine Aufgabe war wahrscheinlich das zu erklären mit dem Input "Hallo"....


----------



## dehlen (15. Feb 2011)

was wäre so schlimm daran 
hab es doch nun verstanden und das eine beispiel selber richtig erklärt 
Danke an alle die mir geholfen haben !


----------



## Tomate_Salat (15. Feb 2011)

Nichts, dafür ist ja das Forum da, um zu helfen. Das schlimme daran ist, dass du wenig bis garkeine bereitschaft zur Eigeninitative gezeigt hast. Viele Fragen hätten sich mit dem öffnen einer IDE von selbst geklärt (oder mit dem Lesen des linkes).


----------



## dehlen (15. Feb 2011)

ok wenn das so rüber kam dann tut mir das leid das wollte ich auf keinen fall hatte mir den link auch angeschaut nur kam nicht so ganz gut mit dem englischen zurecht deswegen habe ich in meinem java buch nochmal nachgeschaut gehabt 

also so sollte das nicht rüberkommen entschuldigung dafür wenn das falsch ankam seid echt ein super forum


----------



## Tomate_Salat2 (16. Feb 2011)

toCharArray ist eine Methode in String, die die Zeichen in ein char-Array kopiert und zurück gibt, die das String-Objekt hat.

Mit for-each kann über ein solches Array oder über ein Objekt einer Iterable implementierenden Klasse iteriert werden. Dazu wird der im Kopf der Schleife deklarierten Variable nacheinander jedes Element des Arrays oder des Iterable-Objektes zugewiesen. Nachteil: Keine Variable "Index", die mit den Iterationsdurchgängen inkrementiert wird.

? : ist die verkürzte Form einer Alternative und ein bedingter Ausdruck. Trifft der vor dem ? genannte Ausdruck zu, wird der vor dem : stehende Ausdruck durchgeführt/, ansonsten der danachstehende.


----------



## Tomate_Salat (16. Feb 2011)

:-/ danke fürs kopieren von meinem Benutzernamen, dann bleibe doch bitte bei "guest" oder so


----------

