2 回答

TA贡献1810条经验 获得超5个赞
因为本地的作用域是第一个 try-catch 块。它是在块内部创建的,当块完成执行时,它将“消失”(超出范围)。a
您可以通过声明块外部来修复它,因此:a
Console.Write("type first number: ");
double a;
try
{
a = Convert.ToDouble(Console.ReadLine());
}
...

TA贡献1859条经验 获得超6个赞
每对 {} 都会打开一个新作用域。因此,由于您为每个 try 块打开了一个新作用域,因此变量 a 和 c 仅在该块中有效。
试试这个:
Double a = 0;
try
{
a = Convert.ToDouble(Console.ReadLine());
}
catch (System.FormatException)
{
Console.WriteLine("that's not a number");
}
(在其他地方也是如此)。
在这种特殊情况下,使用 TryParse() 通常是更简单、更好的解决方案,因为它不涉及异常:
Double a;
String input = Console.ReadLine();
if (!Double.TryParse(input, out a))
{
Console.WriteLine("That was not a number...");
}
甚至类似的东西(无论如何防止继续):
Double a;
do
{
String input = Console.ReadLine();
if (Double.TryParse(input, out a))
{
break;
}
Console.WriteLine("That was not a number... Try again. ");
}
- 2 回答
- 0 关注
- 139 浏览
添加回答
举报