Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止c语言中的类型冲突#_C# - Fatal编程技术网

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

C# 如何防止c语言中的类型冲突#,c#,C#,我在c#中的类型方面有问题。我在控制台应用程序上有一个int输入,我希望将一个(非数字字符)字符串输入放回我现有的但没有图片的do while循环中,就像一个错误一样。我不想将非数字字符串值转换为int,而是想保护我的对象不崩溃,并在出现不可接受的值(即字母字符串值)时将其返回到循环的开头。例如: Console.WriteLine("Please input an odd number:"); int input1 = int.Parse(Console.ReadLine()); if (in

我在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
}

我希望字符串输入被视为“偶数”。我知道这看起来像是一个业余的错误,但实际上我不知所措。。。感谢您的帮助。

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

  int input1 = 0;
    do {
        Console.WriteLine("Please input an odd number:");
        input1 = int.Parse(Console.ReadLine());
    } while (input1 % 2 == 0);

在这些情况下,我通常使用
int.TryParse()
,以确保输入的数字是有效的整数。如果转换成功,此方法返回
true
,并获取
int
out参数,如果转换成功,该参数将设置为整数值。然后,您可以在上面的答案中添加Steve的检查:

int input;

do
{
    Console.Write("Please input an odd number: ");
} while (!int.TryParse(Console.ReadLine(), out input)
         || input % 2 == 0);

用户输入总是以字符串的形式接收,您无法避免,因为用户可以键入键盘可以写入的任何内容。因此,您必须在进行分析时对其进行分析,但您错过了两个错误:

  • 字符串的格式可能不正确(可能不是数字,即包括字母字符)
  • 字符串可能是大于Int32最大值的数字
  • 因此,您只需在代码中添加以下内容:

         try {
            int input1 = Int32.Parse(Console.ReadLine());
         }
         catch (FormatException) {
            //not a number input
            continue;//iterate to the next
         }   
         catch (OverflowException) {
            //inform the user about the error...
            //if this often happens try parsing Int64.Parse
         } 
    

    也可以使用int.TryParse,它们给出相同的结果。检查这个问题

    我不知道你的问题是否正确。但您可以将字符串转换为整数。Convert.ToInt32()。因为用户可以提供任何输入,所以可以先检查它是否为整数。int.TryParse(input1,out value)您是否在询问用户是否输入偶数,您如何返回并要求更多输入,直到他们输入奇数?我不确定您是否完全理解字符串是什么-所有输入都是字符串,直到您执行int.parse-但无论如何,您可能应该查看int.TryParse。很抱歉,我完全没有领会你的意思。请使用
    TryParse