谢绝字符串变量中的字符串

本文关键字:字符串 变量 谢绝 | 更新日期: 2023-09-27 18:11:24

我需要减少在控制台应用程序中写入字符串的能力,此时,当输入文本而不是数字时,控制台崩溃了。

我现在有一些类似的东西

class Program
{
    static void Main(string[] args)
    {
        string[] names = new string[2];
        string age;
        bool agetest = false;
        Console.WriteLine("Hello, I am the NameBot2000, What is your first name?");
        names[0] = Console.ReadLine();
        Console.WriteLine("Well done. What is your surname?");
        names[1] = Console.ReadLine();
        Console.WriteLine("What year were you born in?");
        age = Console.ReadLine();
        int.Parse(age);
        if (Enumerable.Range(0,2015).Contains(age));


        int year = 0;

        string wow = "";
        if (Enumerable.Range(0,31).Contains(year))
            wow = "young";
        else if (Enumerable.Range(31,51).Contains(year)) 
            wow = "old";
        else if (Enumerable.Range(51,500).Contains(year))
            wow = "ancient";
        Console.WriteLine("Well done. You said your name was {0} {1}, and you are {2} years old!", names[0], names[1], year);
        Console.WriteLine("You are so {0}!", wow);
        Console.ReadLine();

    }
}

我已经尝试合并一个布尔值,但我不确定如何比较变量来检查它的格式。

提前感谢!

谢绝字符串变量中的字符串

TryParse代替Parse

int age = 0;
if (Int32.TryParse(Console.Readline, out age)
    // Correct format.
else
    // error!

TryParse()将做的是接受用户输入,尝试解析为int,如果成功,将输出int(和bool = true),否则将输出bool = false

使用try catch

string age = console.readline();
bool validage = false;
While(!validage)
{
    try
    {
        int myage = int.parse(age);
        validage = true;
    }
    catch 
    {
        console.write("Please Enter an Integer value for age:");
        age = console.readline();
    }
}

您可以检查ConsoleKeyInfo以确保用户只能输入年龄的数字。

Console.WriteLine("Enter Age : ");
ConsoleKeyInfo key;
string ageStr = "";
do
{
    key = Console.ReadKey(true);
    if (key.Key != ConsoleKey.Backspace && key.Key != ConsoleKey.Enter)
    {
        if (char.IsNumber(key.KeyChar))//Check if it is a number
        {
            ageStr += key.KeyChar;
            Console.Write(key.KeyChar);
        }
    }
    else
    {
        if (key.Key == ConsoleKey.Backspace && ageStr.Length > 0)
        {
            ageStr = ageStr.Substring(0, (ageStr.Length - 1));
            Console.Write("'b 'b");
        }
    }
} 
while (key.Key != ConsoleKey.Enter);
Console.WriteLine("Age is {0}", ageStr);