我想限制用户只输入整数,如果用户输入任何字母表或字符串,应该会在C#中出现错误

本文关键字:用户 输入 错误 字符串 字母表 整数 任何 如果 | 更新日期: 2023-09-27 18:01:03

我想限制用户只输入整数,如果用户输入任何字母表或字符串,它应该在c#中显示错误

Console.WriteLine("enter a");
int a = int.Parse(Console.ReadLine());
Console.WriteLine("enter b");
int b = int.Parse(Console.ReadLine());
Program e = new Program();
int sum= e.sum( a, b);
Console.WriteLine("sum is " + sum);

public int sum(int a, int b)
{
   int sum = a + b;
   return sum;
}

我想限制用户只输入整数,如果用户输入任何字母表或字符串,应该会在C#中出现错误

只有当您想检查整数的条件时才使用此选项

string strValue = Convet.toString("YourValue");
if(int.TryParse(strValue , out value))
{
}
else
{
  //Value is Not Integer.
}
        string a = Console.ReadLine();
        string b = Console.ReadLine();
        int inputnumber1 = 0;
        int inputnumber2= 0;
        if (int.TryParse(a,out inputnumber1))
        {
        }

就像

您可以尝试捕获:

try
{
    Console.WriteLine("enter a");
    string a = Console.ReadLine();
    Console.WriteLine("enter b");
    string b = Console.ReadLine();
    a=int.parse(a);
    b=int.parse(b);

    Program e = new Program();
    int sum= e.sum( a, b);
    Console.WriteLine("sum is " + sum);

    public int sum(int a, int b)
    {
       int sum = a + b;
       return sum;
    }
}
catch(FormatException e){Console.WriteLine("Wrong input");}

或者,你也可以这样做来获得用户输入,如果失败,重复请求以获得参数:

Boolean wrongInput=true;
string read;
int a;int b;
while(wrongInput)
  {
    Console.WriteLine("enter a");
    read = Console.ReadLine(); 
    bool isNumeric = int.TryParse(read, out a);
    if(isNumeric){wrongInput=false;}
  }
wronginput=while(wrongInput)
  {
    Console.WriteLine("enter b");
    read = Console.ReadLine();
    bool isNumeric = int.TryParse(read, out b);
    if(isNumeric){wrongInput=false;}
  }

您可以在将输入解析为int.之前进行检查

string input = Console.Readline();
if(IsInt(input))
    int a = int.Parse(input);
else
    //Error message here
private bool IsInt(string in)
{
    string intChars = "0123456789";
    return in.All(intChars.Contains);
}

另一种选择是使用int.TryParse((,请参阅https://msdn.microsoft.com/de-de/library/f02979c7(v=vs.110(.aspx。