在线测试中约束的理想行为C#

时间:2018-07-20 03:05:07

标签: c#

我想知道如果在线测试中未满足控制台输入的情况。

就像-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%的东西是什么

1 个答案:

答案 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}.");