格式异常未处理:输入字符串格式不正确

时间:2017-07-06 00:14:27

标签: c# class converter

当我尝试运行我的程序时,编译器会给我一个错误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();
        }

3 个答案:

答案 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";
}