我想知道如果在线测试中未满足控制台输入的情况。
就像-0> x> 10
示例问题-
请从用户处获取两个输入,并返回两者的总和。
约束-
0 < a < 10
2 < b <= 15
下面是我尝试的成功率解决方案。
情况1:
int a = Convert.ToInt32(Console.ReadLine());
while (a < 1 || a > 9)
a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
while (b < 3 || b > 15)
b = Convert.ToInt32(Console.ReadLine());
成功-35%
案例2
int a = Convert.ToInt32(Console.ReadLine());
if(a < 1 || a > 9)
Environment.Exit(0);
int b = Convert.ToInt32(Console.ReadLine());
if(b < 3 || b > 15)
Environment.Exit(0);
成功-35%
情况3:
try
{
int a = Convert.ToInt32(Console.ReadLine());
if (a < 1 || a > 9)
throw new ArgumentException();
int b = Convert.ToInt32(Console.ReadLine());
if (b < 3 || b > 15)
throw new ArgumentException();
return a + b;
}
catch(ArgumentException ex)
{
Console.WriteLine(ex);
}
成功-0%
案例4:无约束
int a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
return a + b;
成功-95%
那我想得到100%的东西是什么
答案 0 :(得分:2)
您需要进行某种形式的验证。不要使用“ Environment.Exit”,因为while循环不能那样工作。 while循环将继续直到返回“ False”为止,例如,请参见下面的代码来验证控制台中的数字输入。
while(!int.TryParse(someString, out int someInt))
{
Console.WriteLine("Your variable someString contains something other than numbers.");
}
您的代码可能看起来像这样。0> x> 10
while(x < 0 || x > 10)
{
Console.WriteLine("Do this code.");
}
约束:
0 < a < 10
2 < b <= 15
代码:
int a;
int b; //Declare these outside the loop.
while(!(a > 0 && a < 10 && b > 2 && b <=15))
{
Console.WriteLine("Please Input a valid number for A.");
a = Console.ReadLine();
Console.WriteLine("Please Input a valid number for B.";
b = Console.ReadLine();
}
int sum = a + b;
Console.WriteLine($"The sum is {sum}.");