C# 如何防止c语言中的类型冲突#
我在c#中的类型方面有问题。我在控制台应用程序上有一个int输入,我希望将一个(非数字字符)字符串输入放回我现有的但没有图片的do while循环中,就像一个错误一样。我不想将非数字字符串值转换为int,而是想保护我的对象不崩溃,并在出现不可接受的值(即字母字符串值)时将其返回到循环的开头。例如:C# 如何防止c语言中的类型冲突#,c#,C#,我在c#中的类型方面有问题。我在控制台应用程序上有一个int输入,我希望将一个(非数字字符)字符串输入放回我现有的但没有图片的do while循环中,就像一个错误一样。我不想将非数字字符串值转换为int,而是想保护我的对象不崩溃,并在出现不可接受的值(即字母字符串值)时将其返回到循环的开头。例如: Console.WriteLine("Please input an odd number:"); int input1 = int.Parse(Console.ReadLine()); if (in
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);
用户输入总是以字符串的形式接收,您无法避免,因为用户可以键入键盘可以写入的任何内容。因此,您必须在进行分析时对其进行分析,但您错过了两个错误:
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
。