【发布时间】:2017-04-12 11:00:37
【问题描述】:
当输入不是数字时,代码会告诉我,但它也会同时编写 else if 代码。
我相信这与我在顶部双变量中将数字 0 分配给 doubleNr 有关,但如果我不这样做,我会得到 Use of unassigned local variable 'doubleNr' 在 while 条件下。
另外,我应该在哪里写 doubleNr = myMethod(intNr); 行?
在 try 块中还是在 catch 和 if 块之间?
int intNr;
double doubleNr = 0;
while (doubleNr < 20 || doubleNr > 30)
{
Console.WriteLine("Enter your number: ");
string strNr = Console.ReadLine();
try
{
intNr = Convert.ToInt32(strNr);
doubleNr = myMethod(intNr); // Should this line go here?
}
catch
{
Console.WriteLine("Number must be INT");
}
// or should it go here?
if (doubleNr < 20)
{
Console.WriteLine("Try a higher number.");
}
else if (doubleNr > 30)
{
Console.WriteLine("Try a lower number.");
}
}
Console.WriteLine("That is a good number.");
【问题讨论】:
-
你不应该使用 try/catch 来控制你的程序的流程
-
doubleNr < 20 || doubleNr < 30这没有意义,相当于说doubleNr < 30所以这里为什么要用两个条件呢? -
如果你不能确定输入是整数,不要使用
Convert(),使用int.TryPase()。如果resul为假,这将给出布尔结果,所以“数字必须是INT”。 -
是的@Tenakey 我不怪你。有些老师就是不知道如何进行不会导致坏习惯的try/catch练习......
-
每次您想跳过当前循环执行时,只需使用
continue;。
标签: c#