如何修复此循环
本文关键字:循环 何修复 | 更新日期: 2023-09-27 18:36:55
我对一个简单的代码有问题。我想做的是:例如,如果用户只给出一个负数而不是正数,那么我想看到:
"this is not valid"
Do you want to try again <y/n>?
我已经尝试了很多组合,如果,否则,但我没有看到那个"do you want to try again?"
或者我看到它们和结果。
这是无效的,最大值为:0
那不好。
int invoer;
int max;
string repeat;
Console.WriteLine("Please give a positive number.'nIf you enter a negative number its not going to work");
do
{
invoer = 0;
max = 0;
repeat = "";
for (int i = 1; invoer >= 0; i++)
{
Console.Write(i + "> ");
invoer = int.Parse(Console.ReadLine());
if (max < invoer)
max = invoer;
}
Console.WriteLine("Maximum value is: " + max);
Console.WriteLine("do you want to try again? y/n: ");
repeat = Console.ReadLine();
} while (repeat == "y" || repeat == "Y");
我为您编辑了这段代码。它询问用户无限的时间正值是多少。仅当输入的值为最大值时,它才会给出最大值。如果值为负,它不会给出最大值......我相信这就是你想要的?
但是,此代码很糟糕。我用它修复了我能做的。如果它不是你要找的,那就报废它,重新开始,因为这种操作方式的丑陋使得运行起来比应有的更困难。
如果这是答案,请检查。
int invoer;
int max;
string repeat;
Console.WriteLine("Please give a positive number.'nIf you enter a negative number its not going to work");
do
{
invoer = 0;
max = 0;
repeat = "";
for (int i = 0; invoer >= 0; i++)
{
Console.Write(i + "> ");
invoer = int.Parse(Console.ReadLine());
if (max < invoer)
{
max = invoer;
Console.WriteLine("Maximum value is: " + max);
}
}
if (invoer < 0)
{
Console.WriteLine("This is not valid...");
}
Console.WriteLine("do you want to try again? y/n: ");
repeat = Console.ReadLine();
}
while (repeat == "y" || repeat == "Y");
}
}
}
你应该
使用 uint。TryParse 而不是 int。解析。它不接受负数,也不会在无效输入时引发异常。
如果你不能使用 int。TryParse,在解析之前,您始终可以确保您的输入是数字:
var input = Console.ReadLine();
var number = !string.IsNullOrWhiteSpace(input) ? input : "0";
var numeralExpression = new System.Text.RegularExpressions.Regex(@"^('d|-'d)$");
if (numeralExpression.IsMatch(number))
{
invoer = int.Parse(number);
}