我想要做的是让它在循环内,计算机检查输入的数字是否首先不是小数,同时我想确保数字在1 - 100范围内我的代码现在适用于关于数字不是小数的第一个函数,所以当我输入小数时,会显示一条错误消息,告诉用户继续添加另一个数字,直到添加一个整数,然后它跑到下一部分。但是,当我输入一个超出范围的数字时,它似乎无法工作,错误信息不会弹出,条件似乎不起作用。我想知道的是我如何得到这两个部分,小数和范围检查同时工作。我对编码很陌生,所以任何解释都很简单,以便我能理解。提前谢谢!
string inputcost;
string inputmoney;
int validcost;
int validmoney;
int changereq;
Console.Write("Please Enter The Cost, In Pennies, Of The Item You Have Purchased: ");
inputcost = Console.ReadLine();
bool result = int.TryParse(inputcost, out validcost);
while (!int.TryParse(inputcost, out validcost))
{
if (result == true )
{
Console.Write("Valid Value");
}
if (result == false)
{
Console.Write("You Cannot Enter Decimals. Please Enter A Valid Integer Value.");
Console.WriteLine();
inputcost = Console.ReadLine();
}
if (validcost < 100 && validcost > 1)
{
Console.Write("valid value");
}
else
{
Console.Write("invalid value.please enter a number between 1 and 100 ");
Console.ReadLine();
}
}
答案 0 :(得分:1)
该行
while (!int.TryParse(inputcost, out validcost))
表示仅当用户键入无法转换为整数的内容时才进入while循环。如果它是一个有效的整数,则永远不会到达while循环中的代码,因此,永远不会执行对有效范围的测试
而是将所有内容放在无限循环中并提供破解程序的方法(键入x以退出)
while (true)
{
Console.Write("Please Enter The Cost, In Pennies, Of The Item You Have Purchased: (type x to quit)");
inputcost = Console.ReadLine();
// Check if the user wants to stop executing the program
if(inputcost == "x")
break;
// Check if it is a valid integer
bool result = int.TryParse(inputcost, out validcost);
if (!result)
{
Console.WriteLine("You Cannot Enter Decimals (or strings). Please Enter A Valid Integer Value.");
}
else if (validcost > 100 || validcost < 1)
{
Console.WriteLine("invalid value.please enter a number between 1 and 100 ");
}
else
{
Console.WriteLine("Valid value");
// other code block that works with the input number....
}
}
答案 1 :(得分:0)
另外,为你的循环使用另一个条件,首先检查一个整数,然后检查它是否在范围内:
while (!int.TryParse(inputcost, out validcost)) || validCost < 1 || validCost > 100)
{
Console.WriteLine("Please enter an integer between 1 and 100");
inputCost = Console.ReadLine();
}
当你的输入有效时应该执行的所有代码现在应该超越循环,而不是 in 。