如果将字符串转换为int,则C#会出错

时间:2017-03-06 15:01:48

标签: c# string int

C#中的简单计算器 我无法理解为什么在获取类Calculator中的任何输入时会出现异常

private ParallaxImageView background;


background = (ParallaxImageView) findViewById(R.id.background);
background.setImageResource(R.drawable.main_back);


@Override
public void onResume() {
    background.registerSensorManager();
    super.onResume();
}

@Override
public void onPause() {
    background.unregisterSensorManager();
    super.onPause();
}

我总是收到类似“FormatException:”的错误,将字符串转换为DateTime

1 个答案:

答案 0 :(得分:1)

你的问题就在这一行

choice = Convert.ToChar(Console.Read());

这只从输入中读取一个字符,但如果按“1”,然后按回车键,则代码进入Add方法,然后立即检索在1之后按下的换行符。
这不是有效的整数,Convert.ToInt32失败。

更改为

string choice = Console.ReadLine().Trim();

并修改您的开关以处理字符串而不是字符

说,你需要为另一个问题改变你的代码。如果您尝试转换不是有效整数的输入,则Convert.ToInt32会失败并出现异常。您应该查看如何使用Int32.TryParse并在输入无效时采取适当的操作

例如

string sa, sb;
Console.WriteLine("Enter the first number:\n");
sa = Console.ReadLine().Trim();
if(!Int32.TryParse(sa, out a))
{
    Console.WriteLine("Type a number");
    return;
}