namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{
int x, y;
// Console.WriteLine("Enter the first number is" + x + "enter Secnd number is" + y);
try
{
Console.WriteLine("Enter the first number");
x = int.Parse(Console.ReadLine());
}
catch(Exception e)
{
Console.WriteLine("invalid input " +e);
}
try
{
Console.WriteLine("Enter the Second number");
y = int.Parse(Console.ReadLine());
}
catch(Exception e)
{
Console.WriteLine("ivalid input"+e);
}
Console.WriteLine("Enter the first number is: x =" +x + "enter Secnd number is: y=" + y);
Console.ReadLine();
}
}
}
答案 0 :(得分:2)
如果int.Parse()
抛出异常,代码会继续并尝试使用更远的变量。要解决此问题,您可以在return;
块的末尾添加catch
语句。不是最理想的解决方案,但它会修复错误。您可以在声明它们时分配x
和y
初始值(0可能是?)。
答案 1 :(得分:0)
使用0初始化你的变量..或者将整个代码放在一个试用阻塞块中
答案 2 :(得分:0)
正如其他人所指出的那样,无论try / catch块中的赋值是否有效,您都会尝试在末尾打印x
和y
。您可以尝试继续提示用户,直到他们输入有效输入。
此外,格式字符串或字符串插值最后可能会更好。
答案 3 :(得分:0)
如果int.Parse()
语句都抛出异常,则x
和y
尚未分配值。异常是由最终WriteLine()
中调用未分配的变量引起的。
我建议使用这样的int.TryParse()
方法,因为它不会使值未初始化。不妨利用一些新的C#语法!
Console.Write("Enter first number: ");
string firstResponse = Console.ReadLine();
if (!int.TryParse(firstResponse, out int x))
{
Console.WriteLine($"Invalid input: {firstResponse}");
}
// If TryParse fails will write 0
Console.WriteLine(x);
或者这也适用!
int x;
if (!int.TryParse(firstResponse, out x))