当我尝试运行我的程序时,编译器会给我一个错误Input string was not in a correct format.
我的代码:
public int number;
public int evenOrOdd()
{
if(number % 2 == 0)
{
return int.Parse(number+" is a even number");
}
else
{
return int.Parse(number + " is a oddnumber");
}
}
和
private void checkerButton_Click(object sender, EventArgs e)
{
pali = new Palindrome() { number = int.Parse(checkerBox.Text) };
checkerLabel.Text = pali.evenOrOdd().ToString();
}
答案 0 :(得分:1)
似乎有几个问题:
一个只是一个设计/使用问题:你有一个名为“evenOrOdd”的方法,它返回一个int。如果您有一个名为“IsEven”(或“IsOdd”)的方法返回一个bool,或者一个名为“GetEvenOrOddMessage”的方法返回一个字符串,那将更有意义。
另一个是您尝试将非数字字符串转换为整数(您的int.Parse
方法将失败并显示非数字字符串值。)
假设您想要一个方法,如果数字是偶数或奇数,则返回消息字符串,因此您不需要尝试将任何内容转换为int,而是转换为字符串。
因此我们可以创建一个返回所需消息的方法,给出一些数字输入:
public string GetEvenOrOddMessage()
{
if (number % 2 == 0)
{
return (number + " is an even number");
}
else
{
return (number + " is an odd number");
}
}
现在,为了测试字符串是否确实是一个整数,我们可以使用int.TryParse
,如果解析成功则返回true并为该值设置out
参数。
private void checkerButton_Click(object sender, EventArgs e)
{
int input;
if (int.TryParse(checkerBox.Text, out input))
{
pali = new Palindrome() { number = input };
checkerLabel.Text = pali.GetEvenOrOddMessage();
}
else
{
// Do something if the input string is not a number
}
}
答案 1 :(得分:0)
int.Parse将抛出有问题的异常。
相反,您应该使用int.TryParse
int parsed = 0;
if (int.TryParse(checkerBox.Text, out parsed))
{
pali = new Palindrome() { number = parsed};
} else {
// show an error and exit the method.
return;
}
答案 2 :(得分:0)
使用 int.parse 仅解析要转换的数据。请注意,int.parse的返回值将为整数。因此字母和字符将触发不正确的格式。例如。 正确 - int.parse(“2”) 不正确 - int.parse(“2a”)
public int number;
if(number % 2 == 0)
{
return int.Parse(number) + "is a even number";
}
else
{
return int.Parse(number) + "is a odd number";
}