C# Zahlen eingeben - kann jemand helfen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wie geri3d schon sagte, du liest nur einmal eine Zahl ein und endest damit in einer Endlosschleife (außer man gibt 0 ein). Die Eingabe gehört somit in die Schleife, da sich der Wert von zahl1 nicht verändert.

Hier wäre meine Lösung

var result = 0d;
double z;
do
{
    z = double.TryParse(Console.ReadLine(), out z) ? z : 0;
    result += z;
    Console.WriteLine(result);
} while (Math.Abs(z) > 0.000000001d);

Du musst außerdem den Datentypen (string, double etc) nicht explizit angeben, wenn der Typ schon Feststeht. z.B. double ergebnis = 0; wird zu var ergebnis = 0. Um noch sicher zu gehen, dass ergebnis double ist schreibe 0d.

Verwende statt double.Parse double.TryParse, da du nicht extra die Exception bei falscher Eingabe abfangen musst.

Lass dich nicht vom Math.Abs verwirren, bei Fließkommazahlen prüft man normalerweise nicht auf einen genauen Wert ab.

double ergebnis = 0;

und das Do { gehört vor dem

string s = System.Console.ReadLine();

dann müsste es klappen.

Woher ich das weiß:Berufserfahrung – Softwareentewickler / Unternehmensberater bei CSDIT iR
Burcub75 
Fragesteller
 30.03.2016, 12:38

klappt irgendwie trz nicht :( stimmt der Rest denn?

0
geri3d  30.03.2016, 12:50
@Burcub75

Ich habs mal für dich ausprobiert, ist zwar auch nicht ganz ok aber es sollte dir auf die Sprünge helfen:

System.Console.WriteLine(" Gebe eine Fließkommazahl ein");
double ergebnis = 0;
double zahl1;
do {
string s = System.Console.ReadLine();
if (double.TryParse(s, out zahl1))
{
ergebnis = ergebnis + zahl1;
System.Console.WriteLine(ergebnis);
}
} while (zahl1 != 0);
2