Autor |
Beitrag |
FabianClassen
Hält's aus hier
Beiträge: 11
WIN XP
Java (JEdit, NetBeans), C#(VS 2008 Express)
|
Verfasst: Di 16.06.09 21:39
Hi
ich habe folgende Schleife:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| while(eingabe != 'n' && eingabe != 'y') { eingabe = (char)(Console.Read()); if (eingabe != 'y' && eingabe != 'n') { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Achtung: Falsche Eingabe!"); Console.ForegroundColor = ConsoleColor.White; } } |
In ihr soll einfach nur überprüft werden, ob der Nutzer 'y' für "yes" oder 'n' für "no" eingibt.
Bei einer falschen Eingabe wird obwohl ich nur einmal diese Ausgabe will, dreimal "Achtung: Falsche Eingabe" ausgegeben.
Aber wieso das so ist, verstehe ich nicht
Ich hoffe ihr könnt mir helfen.
MFG
Fab

|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 16.06.09 21:46
Ich nehme an die beiden Zeilenumbruchszeichen kommen noch dazu und werden in den beiden weiteren Durchläufen gelesen. 
|
|
FabianClassen 
Hält's aus hier
Beiträge: 11
WIN XP
Java (JEdit, NetBeans), C#(VS 2008 Express)
|
Verfasst: Di 16.06.09 21:48
Kann ich die denn irgendwie löschen?
In C++ wäre das ja z.B.
Quelltext
MFG
Fab

|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 16.06.09 21:53
Ich würde es so machen: C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| string eingabe = ""; while (eingabe != "n" && eingabe != "y") { eingabe = Console.ReadLine(); if (eingabe != "y" && eingabe != "n") { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Achtung: Falsche Eingabe!"); Console.ForegroundColor = ConsoleColor.White; } } |
|
|
FabianClassen 
Hält's aus hier
Beiträge: 11
WIN XP
Java (JEdit, NetBeans), C#(VS 2008 Express)
|
Verfasst: Di 16.06.09 21:57
Danke
jetzt klappt es prima
MFG
Fab

|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 17.06.09 09:25
Da du sowieso nur ein Zeichen (eine Taste) abfragen willst, halte ich Console.ReadKey() für besser geeignet. Jürgen
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 17.06.09 09:28
Dann kommt die Eingabe allerdings sofort an und der Benutzer kann nicht noch korrigieren. Wenn das so gewünscht ist, ist das natürlich passender.
Üblich ist meistens jedoch, dass man erst mit Enter bestätigen muss. Und in den meisten Fällen finde ich das auch besser.
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mi 17.06.09 09:31
jaenicke hat folgendes geschrieben : | Üblich ist meistens jedoch, dass man erst mit Enter bestätigen muss. Und in den meisten Fällen finde ich das auch besser. |
Gut, du hast recht, in den meisten Fällen... Jürgen
|
|
FabianClassen 
Hält's aus hier
Beiträge: 11
WIN XP
Java (JEdit, NetBeans), C#(VS 2008 Express)
|
Verfasst: Mi 17.06.09 12:25
Danke ihr beiden
MFG
Fab

|
|