Entwickler-Ecke

Sonstiges (.NET) - Zahl vergleichen und entsprechende Ausgabe machen


interessierter - So 15.04.12 00:48
Titel: Zahl vergleichen und entsprechende Ausgabe machen
Hallo Zusammen

Hab noch ne Frage zu meinem c# Konsolenprogramm.

Man gibt eine Zahl ein. Wenn die zahl kleiner 1 oder grösser 100 ist, soll das programm solange nach nach einer neuen zahl fragen bis die Bedingung erfüllt ist.

Ich habe angefangen den Code zu schreiben und für mich ist er irgendwie völlig logisch, jedoch tut das er nicht ganz das was ich will. Ich glaube es fehlt nur noch ein Detail.
Wenn ich bei der Eingabe etwas zwischen 1 und 100 eingebe klappt es. Wenn ich testhalber etwas unter 1 oder über 200 eingebe, hört die Schleife nicht mehr auf.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Console.WriteLine("Zahl eingeben");
string Eingabe;
Eingabe = Console.ReadLine();
float x = float.Parse(Eingabe);

if (x < 1 | x > 100)

do
{
Console.WriteLine("neue zahl eingeben");
Eingabe = Console.ReadLine();
{
while (x < 1 | x > 100);


CODE ENDE

Liebe Grüsse
interessierter

Moderiert von user profile iconKha: C#-Tags hinzugefügt


Kha - So 15.04.12 02:11

Schau noch einmal nach, an welchen Stellen du überhaupt x veränderst ;) .


Th69 - So 15.04.12 11:27

Und desweiteren verwendest du den falschen Operator, benutze anstatt dem binären Operator | den logischen Operator ||.


interessierter - So 15.04.12 15:22

Ich habe meinen Code nochmals Schrittweise analysiert, aber kann nicht erkennen wo der Fehler liegt.

Meiner Auffassung nach verändere ich x nie. Einfach formuliert sage ich dem Computer ja folgendes:

1. Lies eine Zahl ein (wenn Zahl oke gebe Zahl aus)
sonst
2. Wenn Zahl kleiner 1 oder grösser hundert
3. Frage so lange nach eienr Zahl und lies sie ein, wie die Eingabe immernoch kleiner 1 oder grösser 100 ist

Wo liegt mein Denkfehler?


Th69 - So 15.04.12 15:46

Genau das ist ja dein Denkfehler: du fragst in der Schleife immer den Wert von x ab, änderst diesen aber nie - ergo Endlosschleife!
Du mußt natürlich auch in der Schleife die Eingabe nochmals mittels x = float.Parse(Eingabe); parsen.

P.S. Die Parse-Methode hat den Nachteil, daß eine Exception geworfen wird, wenn keine Zahl vorliegt - besser ist die Verwendung der TryParse-Methode.


interessierter - So 15.04.12 15:53

jetzt verstehe ich :) :)

Ganz einfach ausgedrückt, weiss das Programm innerhalb der Schleifedann nicht mehr das es
ein float.Parse ist. Deswegen muss ich dann nochmals sagen das es ein float.parse ist.

Jetzt ist mir natürlich alles sofort klar. Danke für den Hinweis mit try.parse. Werde mich mal erkundigen wie das zu benutzen ist.

Herzlichen Dank

Grüsse
interessierter