如何防止c#中的类型冲突

时间:2017-06-19 22:42:15

标签: c#

我在使用c#中的类型时遇到问题。我在控制台应用程序上有一个int输入,我希望将(非数字字符)字符串输入放回到我现有的但没有图像的do while循环中,就像错误一样。我不想将非数字字符串值转换为int,而是希望保护我的对象不会崩溃,并在呈现不可接受的值(即字母字符串值)时将其返回到循环的开头。例如:

Console.WriteLine("Please input an odd number:");
int input1 = int.Parse(Console.ReadLine());
if (input1 % 2 == 0)
{
    Console.WriteLine("Please input an odd number.");
    //is even
}
else
{
    TotalOdd = TotalOdd + input1;
    TotalNumeral++;
    Console.WriteLine("Accepted.");
    //is odd
}

我希望将字符串输入视为“偶数”数字。我知道这似乎是一个业余的错误,但我实际上不知所措......任何帮助都表示赞赏。

3 个答案:

答案 0 :(得分:2)

我通常在这些情况下使用class ServiceCleintExtension implements IGlobalExtension { @Autowired ServiceCLient client @Override void start() { client.execute() } ... } ,只是为了确保输入的数字是有效整数。如果转换成功,此方法将返回int.TryParse(),并采用true out参数,如果成功,将设置为整数值。然后你可以在上面的答案中添加史蒂夫的支票:

int

答案 1 :(得分:1)

用户输入始终以字符串形式接收,您无法避免这种情况,因为用户可以键入键盘可以写入的任何内容。所以你必须像你一样解析它,但你错过了两个错误:

  1. 字符串的格式可能不正确(可能不是数字,即包括字母字符)
  2. 字符串可以是大于Int32
  3. 的最大值的数字

    所以你只需要在代码中添加以下内容:

    [a-zA-Z0-9@-]

    你也可以使用int.TryParse,它们给出相同的结果。检查此问题What is better: int.TryParse or try { int.Parse() } catch

答案 2 :(得分:0)

以下代码将循环,直到输入奇数,然后input1将保持奇数值;

3