0

当我从文本框中检查输入时,我将其传递到循环中以检查单个字符。

我有点不确定为什么会发生这种情况,但是当我输入“/”时,函数将其读取为假?

 // Checks the Password contains the correct input 
 for (i = 0; i < passwordLength; i++)
 {
     v = Convert.ToInt32(passwordArray[i]);
     // (not 0-9 or not A-Z or not a-z) 
     // "/"(converted to 47) reads as (true)+(true)+(false) = false
     if ((v < 48 || v > 57) && (v < 65 || v > 90) && (v < 97 || v > 122))
     {
         e = 2;
     }
 }
4

2 回答 2

0

在你的 if 条件下试试这个

if (!(v >= 48 && v <= 57) && !(v >= 65 && v <= 90) && !(v >= 97 && v <= 122))
于 2013-12-17T03:45:50.840 回答
0

这以同样的方式工作,只是我认为不那么令人困惑。

if( !((v >= 48 && v <= 57) || (v >= 65 && v <= 90) || (v >= 97 && v <= 122)))

但是,这也有效。

((v < 48 || v > 57) && (v < 65 || v > 90) && (v < 97 || v > 122))

顶部函数,使用 || (或)作为比较,倾向于真实:

(true) || (false) = (true);

但是随着!(不)添加,结果是相反的:

!((true) || (false)) = (false);

第二个函数,使用 && (and) 作为比较,倾向于 false:

(true) && (false) = (false);

@Jade 感谢您帮助我了解它:)

于 2013-12-17T22:57:49.090 回答