In C# sto provando a fare in modo che l'utente inserisca un numero. Allora voglio controllare cheVerificare che l'input dell'utente sia doppio ed è maggiore di zero?
- Essi sono entrati in una stringa che può essere convertito in un doppio e
- Hanno inserito un valore maggiore di zero
Il metodo che ho creato inizialmente era
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;
Il problema era che se l'utente immesso diceva "-10" e quindi "f" si sarebbe verificata un'eccezione. Questo perché il programma passerebbe oltre il primo controllo (che controlla il doppio) per il valore di -10, ma quando viene inserita la "f" genera un'eccezione quando viene dato solo il secondo test.
Credo che la soluzione sia creare un'istruzione while che scriva l'errore quando il valore non può essere convertito in double o il valore viene convertito in double ed è inferiore a zero. Quello che non so come fare è avere il valore convertito in double e poi valutato come maggiore di zero all the while statement.
È più idiomatico usare '! Condition' invece di' condition == false'. Capisco che tu abbia mantenuto il codice il più simile all'originale possibile, ma ti sto solo segnalando per riferimento futuro. – Kroltan