Console.WriteLine("Enter value for Monday : ");
milesMon = Console.ReadLine();
try
{
dblMon = double.Parse(milesMon);
}
catch
{
Console.WriteLine("You entered an invalid number - a default of 0 has been set");
dblMon = 0;
while (true) break;
Console.WriteLine("Enter value for Monday : ");
milesMon = Console.ReadLine();
在它的当前状态下,代码仅在用户第一次输入错误数据后提示用户,我想知道如何使用它每次都会发生。
-Thanks
答案 0 :(得分:1)
您可以使用TryParse()
将输入字符串转换为double,如果转换失败则返回false;根据该输入,您可以提示用户输入是否有效。这将循环,直到用户输入Exit
string inputVal = "";
double inputDoubleVal;
while (inputVal == "Exit")
{
Console.WriteLine("Enter value for Monday : ");
inputVal = Console.ReadLine();
if (double.TryParse(inputVal, out inputDoubleVal))
{
//Process with your double value
}
else
{
Console.WriteLine("You entered an invalid number - a default of 0 has been set");
}
}
答案 1 :(得分:0)
基本上你想写一个循环。输入无效时,提示用户。因此,您应该有一个名为bool
的{{1}}变量来指示输入是否有效。而不是像这样的循环:
valid
在while循环中,提示用户。所以代码看起来像这样:
while (!valid) {
//...
}
希望这有帮助!
答案 2 :(得分:0)
您可以使用递归来创建无端循环,而无需使用for
或while
。
另外,不要使用try-catch语句,最好使用TryParse
Doc ref:https://msdn.microsoft.com/en-us/library/bb384043.aspx
public int readInput(){
int val = 0;
Console.WriteLine("Enter a valid int");
string enteredVal = Console.ReadLine();
bool result = int.TryParse(enteredVal, out val);
if(result)
return val;
Console.writeLine("Try again, only int values allowed");
return readInput();
}
int val = readInput();
答案 3 :(得分:0)
您应该使用do或while循环来重复提示,直到输入有效的double。您还应该考虑添加某种形式的退出关键字。就像他们进入“退出,退出,q”等。让它终止应用程序而不是循环回来。然而,作为一个控制台应用程序,ctrl + c将关闭它,无论它正在做什么(这是kill命令),但不是每个人都知道。
bool repeat = true;
var dblMilesMon = (double)0;
do
{
Console.WriteLine("Enter value for Monday : ");
var strMilesMon = Console.ReadLine();
if (!double.TryParse(strMilesMon, out dblMilesMon))
Console.WriteLine("You entered an invalid number - please enter a numeric value.")
else
repeat = false;
}while (repeat);
//do something with dblMilesMon