W języku C# Próbuję wprowadzić numer użytkownika. Następnie chcę, aby sprawdzić,Sprawdź, czy dane wejściowe użytkownika są podwójne i czy są większe od zera?
- one weszły ciąg znaków, który może być przekształcony w podwójne i
- weszły one wartość większą niż zero
Metoda ja początkowo tworzony był
string inValue;
double outcome;
Console.WriteLine("Enter amount: ");
inValue = Console.ReadLine();
while (double.TryParse(inValue, out outcome) == false)
{
Console.WriteLine("Initial value must be of the type double");
Console.WriteLine("\nPlease enter the number again: ");
inValue = Console.ReadLine();
}
outcome = double.Parse(inValue);
while (outcome < 0)
{
Console.WriteLine("Initial value must be of at least a value of zero");
Console.WriteLine("\nPlease enter the number again: ");
inValue = Console.ReadLine();
outcome = double.Parse(inValue);
}
return outcome;
Problem polegał na tym, że jeśli użytkownik wpisze "-10", a następnie "f" wystąpi wyjątek. Wynika to z tego, że program przejdzie poza pierwszą kontrolę (sprawdzającą podwójne) dla wartości -10, ale wtedy, gdy zostanie wprowadzone "f", zgłasza wyjątek, gdy tylko otrzymuje drugi test.
Uważam, że rozwiązaniem jest utworzenie instrukcji while, która wypisze komunikat o błędzie, gdy nie można przekonwertować wartości na wartość double lub wartość zostanie przekonwertowana na wartość double i będzie mniejsza od zera. To, czego nie wiem, jak to zrobić, to przekonwertować wartość na podwójną, a następnie oszacować ją jako większą od zera w instrukcji while.
Bardziej idiomatyczne jest użycie '! Condition' zamiast' condition == false'. Rozumiem, że zachowałeś kod jak najbardziej zbliżony do oryginału, ale wskazuję tylko na przyszłe referencje. – Kroltan