2013-02-21 195 views
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 (mArray[i] >= 50 && mArray[i] <= 10)For循環和if語句

語句來的工作,但它正常工作與1條規則if (mArray[i] >= 50)

+3

它怎麼能起作用?條件是它大於50,但同時低於10! – dutzu 2013-02-21 07:59:46

回答

3

無數量可超過50比10較大和較小的,您的情況是錯誤的:

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

應該

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

哦,我看到啊! – 2013-02-21 08:07:00

+0

@ user2094494:但是請閱讀我編輯的答案 - 即使在修復了這種情況之後,您的代碼仍然被破壞,因爲它會允許用戶輸入第二個錯誤的數字並繼續。 – 2013-02-21 08:15:38

5

您應該使用||代替的&&

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

看看你的條件:

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

您正在嘗試查找至少有50個和的最多10個的數字

你認爲哪些數字會被認爲是無效的?

我懷疑你的意思是:

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

請注意,我已經改變了>=<=><分別以配合您的留言 - 我想,你希望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; 
+0

50和10之間的任何數字 – 2013-02-21 08:02:37

+0

@ user2094494:大於50 *和*小於10的數字?你能舉出一個具體的例子嗎?仔細想想...... – 2013-02-21 08:04:52

2

你的陳述是不可能的。 myArray[i]必須大於50且小於10.您的意思是:

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

4

哪個數字比50,並在同一時刻小大那麼10?我認爲你應該用||替換你的& &(AND)。 (OR)

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 
2

試着改變你的邏輯:

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