1
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 语句中有两条规则时,它似乎无法正常工作 if (mArray[i] >= 50 && mArray[i] <= 10)

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

4

7 回答 7

5

你应该使用||而不是&&

mArray[i] >= 50 || mArray[i] <= 10 
于 2013-02-21T08:00:13.803 回答
4

哪个数字大于 50 并且同时小于 10?我认为你应该用 || 替换你的 && (AND) (或者)

于 2013-02-21T08:01:42.213 回答
4

看你的情况:

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

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

你心目中的哪个号码会被认为是无效的?

我怀疑你的意思是:

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

请注意,我已经分别更改了>=and <=to><to 以匹配您的消息 - 我假设您希望 10 或 50 有效。

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

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;
于 2013-02-21T08:00:47.367 回答
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 
于 2013-02-21T08:02:24.237 回答
3

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

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

它应该是

if (mArray[i] >= 50 || mArray[i] <= 10)
于 2013-02-21T08:01:34.197 回答
2

尝试将您的逻辑更改为:

if (mArray[i] >= 50 || mArray[i] <= 10)
于 2013-02-21T08:04:11.907 回答
2

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

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

?

于 2013-02-21T08:01:19.923 回答