[C#] while schleife - was ist falsch? *erledigt*

WeBO

klamm-forum-noob
23 August 2007
26
1
hallo forum,
kann mir einer sagen warum die schleife nicht funktioniert?
danke schonmal :)
PHP:
while ((str_weiter_eingabe != "ja") | (str_weiter_eingabe != "nein"))
{
  Console.WriteLine("");
  Console.WriteLine("Falsche Eingabe!");
  Console.WriteLine("");
  Console.WriteLine("Möchten sie weiterrechnen? Antworten sie mit 'ja' oder 'nein'");
  str_weiter_eingabe = Console.ReadLine();
}
// also die schleife soll bewirken, dass solange wie das string "str_weiter_eingabe" nicht ja oder nein ist immer wieder die frage dannach gestellt wird, also der user nicht irgendwelchen sinnlosen sachen reinschreiben kann
 
Zuletzt bearbeitet:
Programmiertechnisch ist soweit ichs grad blicken kann nichts falsch. Logisch ist deine Aussage allerdings immer TRUE, aus dem einfachen Grund, dass wenn der Benutzer "ja" eingibt, die Eingabe immer noch != "nein" ist und damit immer noch in der while schleife hängt :ugly:

Code:
while ( ! ((str_weiter_eingabe == "ja") || (str_weiter_eingabe == "nein")))

..müsste helfen.
 
danke,
genial, hat funktioniert

kannst du mir noch sagen wie deine while schleife sich ausgesprochen anhören würde?
also solange wie ...
damit ich das nachvollziehen kann

... ich fang gerade erst an ein bissl mit c# klarzukommen

also danke schonmal
 
Zuletzt bearbeitet:
kannst du mir noch sagen wie deine while schleife sich ausgesprochen anhören würde?
also solange wie ...
damit ich das nachvollziehen kann

Solange (while) die Eingabe nicht (!) ja oder (||) nein ist ...

Umgangssprachlich leichter verständlich: Solange nicht entweder ja oder nein eingegeben wurde...
 
Code:
while ( ! ((str_weiter_eingabe == "ja") || (str_weiter_eingabe == "nein")))

weil dus nochmal aufgedröselt haben wolltest, fang einfach innen an zu lesen, ist meistens am einfachsten:
:arrow: (str_weiter_eingabe == "ja") <= selbsterklärend, TRUE wenn die Variable "ja" ist, andere Seite halt entsprechend "nein"
:arrow: a || b <= im Gegensatz zu deinem verwendeten OR ist die doppelte Pipe der logische Operator. Das | was du verwendet hast, ist ein bitweises oder, solltest du nur benutzen wenn du explizit bitweise arbeitest. Hätte in deinem Fall zwar funktioniert, hat aber einen komischen Beigeschmack :mrgreen: Selbes gibt es auch für das bitweise &, nämlich als logischer Operator ein doppeltes &&.
:arrow: ! a <= Verneinung, auch eher selbsterklärend..

lange Rede kurzer Sinn: der Phreak hats schon gesagt, im Prinzip frag ich nach ob nicht eins von beiden eingegeben worden ist.
 
ah, alles klar
jut hatte nur das mit dem doppelten | nicht verstanden
hab früher nur mit delphie gearbeitet und da gabs sowas nich (oder ich war nich so tiefgründig vorgestoßen :ugly:), desshalb hab ich das nich so verstanden gehabt
jut, dann danke ich noch mal, machts jut