Unverständnis über Verhalten bei do while Austrittsbedingung
-
...
-
Tanren schrieb:
Deine while Bedingung ist falsch. Überleg dir mal genau was passiert wenn char(13) oder char(99) daherkommt.
Tip: Deine Bedingung ist immer true egal welches Zeichen kommt.Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.
Swordfish schrieb:
hexadezimal schrieb:
[...] solange ich keine Enter oder c Taste betätige, [...]
... und warum stehen in deinem Code so komische Zahlen?
die hab ich aus der ASCII-Tabelle. Was hab ich falsch gemacht?
-
hexadezimal schrieb:
Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.
Du musst das schon etwas genauer anschauen so wird das sonst nichts mit dem programmieren.
Was mach denn das || ?
-
hexadezimal schrieb:
Tanren schrieb:
Deine while Bedingung ist falsch. Überleg dir mal genau was passiert wenn char(13) oder char(99) daherkommt.
Tip: Deine Bedingung ist immer true egal welches Zeichen kommt.Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.
Nein, du sollst nicht sagen, was du denkst, was es tut, sondern du sollst überlegen, was es tut!
Lassen wir mal die blödsinnigen Typumwandlungen weg, die machen sowieso nichts. Dann wird es etwas übersichtlicher:if (zeichen != 13 || zeichen != 99)In Worten: "Wenn Zeichen ungleich 13 oder wenn Zeichen ungleich 99
Nun überleg mal, in welchen der folgenden Fällen die Bedingung wahr oder falsch ist (und warum!):
1. Wenn Zeichen gleich 13 ist
2. Wenn Zeichen gleich 99 ist
3. Wenn Zeichen gleich 73 ist
4. Wenn Zeichen einen beliebigen Wert hat
-
Tanren schrieb:
hexadezimal schrieb:
Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.
Du musst das schon etwas genauer anschauen so wird das sonst nichts mit dem programmieren.
Was mach denn das || ?Ok. Ich denke ich hab einen meiner Fehler entdeckt. Die || überprüfen ob nur eins von dem Zutrifft. Wenn ich jetzt zwar kein Enter gedrückt habe, aber dafür c macht er dennoch weiter mit dem Einlesen, da ja in dem Fall bei Enter true rauskommt, wenn ich kein Enter betätige. Also ist die Abfrage totaler Quatsch, weil es nie der Fall sein kann.
SeppJ schrieb:
hexadezimal schrieb:
Tanren schrieb:
Deine while Bedingung ist falsch. Überleg dir mal genau was passiert wenn char(13) oder char(99) daherkommt.
Tip: Deine Bedingung ist immer true egal welches Zeichen kommt.Hm. So wie ich es verstehe überprüft er bei char(13) ob die Enter-Taste betätigt wurde und bei char(14) ob die c-Taste betätigt wurde.
Nein, du sollst nicht sagen, was du denkst, was es tut, sondern du sollst überlegen, was es tut!
Lassen wir mal die blödsinnigen Typumwandlungen weg, die machen sowieso nichts. Dann wird es etwas übersichtlicher:if (zeichen != 13 || zeichen != 99)In Worten: "Wenn Zeichen ungleich 13 oder wenn Zeichen ungleich 99
Nun überleg mal, in welchen der folgenden Fällen die Bedingung wahr oder falsch ist (und warum!):
1. Wenn Zeichen gleich 13 ist
2. Wenn Zeichen gleich 99 ist
3. Wenn Zeichen gleich 73 ist
4. Wenn Zeichen einen beliebigen Wert hatIn allen Fällen ist sie wahr, da, wenn zwar der erste Teil der Bedingung falsch ist durch den zweiten Teil der Bedingung der Gesamtausdruck aber wieder wahr wird, und andersrum. Stimmt diese Überlegung?
-
...
-
Gracias

Klasse Forum

-
...
-
Also könnte die Bedingung so aussehn:
do{ ... }while(zeichen != '\r');?
-
while(zeichen != '\r' && zeichen != 'c');