在if / else中创建一个int并稍后再使用它

时间:2014-11-04 15:41:11

标签: c# if-statement scope

我正在玩这里的东西,我遇到了麻烦。

我有一个输入;它可以是数字或字母。我必须检查它是数字还是字母。所以我使用了if。如果输入是一个数字,我的代码应该创建一个int。如果它是一个字母,它应该创建一个不同的int。但由于某种原因,我以后不能使用整数。有什么方法可以解决这个问题吗?

Console.WriteLine("Length (ms)");
string I = Console.ReadLine();
int I2 = Int32.Parse(I);
Console.WriteLine("Height: r for random");
string L = Console.ReadLine();
//So it asks for an input,for which I here want to check what it is
if (L != "r")
{
    int He = Int32.Parse(L);
}
else
{
    Random Hi = new Random();
    int He = Hi.Next(1, 50);
}
//----------------------I want to use the ints in here
while(true)
{
    Random R = new Random();
    Random R2 = new Random();
    int H = R2.Next(1,He);
    int rH = H * 100;
    Console.WriteLine("Height is {0}",H);
    Console.Beep(rH,I2);

1 个答案:

答案 0 :(得分:1)

您需要调整int He的范围,使其超出条件块。

int He;
if (L != "r")
{
     He = Int32.Parse(L);
}
else
{
     Random Hi = new Random();
     He = Hi.Next(1, 50);
}

您还可以使用此示例中的conditional operator来使代码看起来像样式一样可能更适合。

int He = L != "r" ? Int32.Parse(L) : (new Random()).Next(1, 50);

关于上述两个版本,值得注意的一点是,Int32.Parse可能会根据string L的格式引发许多异常,您可能希望使用{{1}}来处理这些异常}语句或使用try - catch方法