为什么这返回错误
本文关键字:错误 返回 为什么 | 更新日期: 2023-09-27 17:55:26
所以我有这个检查方法,如果满足所有参数,则返回true,如果满足,则返回false。我的问题是这个...为什么 (c <= 'a' && c>= 'z' || c == '/') 等同于 false,当输入:
提琴手01010100 10011100/ro ?
*线已标记
public static bool check(string action)
{
string[] arguments = action.Split(' ');
if (arguments.Length > 3)
{
string[] time = { arguments[1], arguments[2] };
for (int i = 1; i < time.Length; i++)
{
if (i == 1 || i == 2)
foreach (char c in time[i])
{
if (c >= '0' && c <= '9') { }
else return false;
}
else break;
}
for (int i = arguments.Length - 1; i >= 3; i--)
{
if (i != 1 || i != 2 && arguments[i] != "")
{
foreach (char c in arguments[i])
{
>>> >>> >>> if (c <= 'a' && c >= 'z' || c == '/') { }
else return false;
}
if (arguments[i] == " " || arguments[i] == null || call.arguments.Contains(arguments[i]) == true) { }
else return false;
}
}
}
else if (arguments.Length == 3)
{
for (int i = 1; i <= arguments.Length; i++)
{
if (i == 1 || i == 2)
{
foreach (char c in arguments[i])
{
if (c >= '0' && c <= '9') { }
else return false;
}
}
else
{
foreach (char c in arguments[i].ToUpper())
{
if (c <= 'a' && c >= 'z' || c == '/') { }
else return false;
}
if (arguments[i] == " " || arguments[i] == null || call.arguments.Contains(arguments[i]) == true) { }
else return false;
}
}
}
else return false;
return true;
}
在您的代码中,表达式是c <= 'a' && c >= 'z'
它们不能都是真的,所以它总是假的。你可能的意思是写c >= 'a' && c <= 'z'
你的代码有很多错误。
首先,在这段代码中:
string[] time = { arguments[1], arguments[2] };
for (int i = 1; i < time.Length; i++)
{
if (i == 1 || i == 2)
i
永远不等于2
,因为(2 >= time.Length
)。你应该使用这个:
for (int i = 0; i < time.Length; i++)
无需任何检查。
其次,这部分:
for (int i = arguments.Length - 1; i >= 3; i--)
{
if (i != 1 || i != 2 && arguments[i] != "")
i
永远不会等于1
或2
,因为这个检查已经在for
语句中。您应该删除此检查以清除代码。
第三,这个检查c <= 'a' && c >= 'z'
总是假的,因为'z' > 'a'
.您可能应该使用此c >= 'a' && c <= 'z'
。
祝你好运,会更加小心!