我的简单代码有问题。我想要做的是:例如,如果用户只提供否定数字而不是正数,那么我想看看:
"this is not valid"
Do you want to try again <y/n>?
我已经尝试了很多组合if if if if但是我没有看到"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");
答案 0 :(得分:2)
我为你编辑了这段代码。它向用户询问无限时间的正值。如果输入的值是最大值,它只给出最大值。如果价值为负,它不会给出最大值...我相信这是你想要的吗?
然而,这段代码太可怕了。我用它修好了。如果它不是您正在寻找的东西,那么只需废弃它并开始新的,因为它运行方式的丑陋使得运行起来比它应该更难。
如果这是答案,那么请检查。
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");
}
}
}
答案 1 :(得分:0)
您应该使用uint.TryParse而不是int.Parse。它不接受负数,也不会在无效输入上抛出异常。
答案 2 :(得分:0)
如果你不能使用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);
}