For loop和If语句

时间:2013-02-21 07:58:52

标签: c# if-statement for-loop

int i;
int[] mArray = new int[5];

for (i = 0; i < mArray.Length; i++)
{
    Console.WriteLine("Please enter a number:");
    mArray[i] = Convert.ToInt32(Console.ReadLine());

    if (mArray[i] >= 50 && mArray[i] <= 10)
    {
        Console.WriteLine("Please enter numbers only between 10 and 50.");
        mArray[i] = Convert.ToInt32(Console.ReadLine());
    }

}

如果声明中有两个规则if (mArray[i] >= 50 && mArray[i] <= 10)

,那么它似乎无法工作

但它适用于1条规则if (mArray[i] >= 50)

7 个答案:

答案 0 :(得分:5)

您应该使用||代替&&

mArray[i] >= 50 || mArray[i] <= 10 

答案 1 :(得分:4)

看看你的情况:

if (mArray[i] >= 50 && mArray[i] <= 10)

您正在尝试查找同时至少50 最多10 的数字。

您认为哪些号码被视为无效?

我怀疑你的意思是:

if (mArray[i] > 50 || mArray[i] < 10)

请注意,我已将>=<=分别更改为><以匹配您的消息 - 我假设您希望10或50有效。< / p>

另请注意,您只测试一次有效性 - 如果用户继续输入第二个错误号码,您就会接受。我怀疑你想要的东西:

Console.WriteLine("Please enter a number:");
int value = Convert.ToInt32(ConsoleReadLine());

while (value > 50 || value < 10)
{
    Console.WriteLine("Please enter numbers only between 10 and 50.");
    value = Convert.ToInt32(Console.ReadLine());
}
// Now we know it's valid, so it's reasonably to put it in the array
mArray[i] = value;

答案 2 :(得分:4)

哪个数字大于50并且在同一时刻小于10?我认为你应该更换你的&amp;&amp; (AND)与|| (OR)

答案 3 :(得分:3)

没有数字可以大于50且小于10,您的条件是错误的:

if (mArray[i] >= 50 && mArray[i] <= 10)

应该是

if (mArray[i] >= 50 || mArray[i] <= 10)

答案 4 :(得分:3)

这取决于你打算如何使其发挥作用

/*Pass if the value is more or equal 50 OR lesst or equal 10*/
mArray[i] >= 50 || mArray[i] <= 10 

/*Passs if the value is between 10 and 50, including edges*/
mArray[i] >= 10 && mArray[i] <= 50 

答案 5 :(得分:2)

你的陈述是不可能的。 myArray[i]必须大于50且小于10.您的意思是:

if (mArray[i] >= 50 || mArray[i] <= 10)

答案 6 :(得分:2)

尝试将您的逻辑更改为:

if (mArray[i] >= 50 || mArray[i] <= 10)