繁体   English   中英

我怎么能放一个规则,只允许您在C#的控制台应用程序中输入数字

[英]how can i put a rule that will only let you enter a number in a console application on C#

所以我的问题是,当用户输入字母时,它会导致我的控制台应用崩溃这样做很麻烦:(我还有其他方法也想实现答案,谢谢大家。

   {

        double r;
        Console.WriteLine("Please enter the radius: ");
        r = Convert.ToDouble(Console.ReadLine());
        double areaCircle = pi * (r * r);
        Console.WriteLine("Radius: {0}, Area: {1}", r, areaCircle);
        Console.ReadLine();

    }
double userInput;
while(!double.TryParse(Console.ReadLine(), out userInput))
{
    Console.WriteLine("Your input was not numeric. Please enter a number.");
}

while循环退出时, userInput将包含从Console.ReadLine()解析的double userInput

如果您不止一次这样做,那么我会编写一个函数。 您可能还需要一个正数。

double GetInput(string prompt)
{
    Console.WriteLine(prompt);
    double userInput;
    while(!(double.TryParse(Console.ReadLine(), out userInput) && userInput > 0))
    {
        Console.WriteLine("Please enter a positive number.");
    }
    return userInput;
}

然后

var r = GetInput("Please enter the radius:");

使用TryParse

{

   double r;
   Console.WriteLine("Please enter the radius: ");
   Double.TryParse(Console.ReadLine(), out r);
   double areaCircle = pi * (r * r);
   Console.WriteLine("Radius: {0}, Area: {1}", r, areaCircle);
   Console.ReadLine();

 }

代替使用Convert.ToDouble,而使用TryParse:

    double r;
    string line;
    Console.WriteLine("Please enter the radius: ");
    line = Console.ReadLine();
    if (double.TryParse(line, out r))
    {
        double areaCircle = pi * (r * r);
        Console.WriteLine("Radius: {0}, Area: {1}", r, areaCircle);
        Console.ReadLine();
    }

为了使它更健壮,请尝试使用while循环以确保获得有效的输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM