【发布时间】:2014-05-09 12:35:48
【问题描述】:
所以我有这个检查方法,如果所有参数都满足,则返回 true,否则返回 false。我的问题是......为什么 (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;
}
【问题讨论】:
-
你的帖子和你的代码不匹配 - 你有 2 个相反的表达式 - 确保你有正确的一个
(c >= 'a' && c <= 'z' || c == '/')或(c <= 'a' && c >= 'z' || c == '/') -
你能准备一个关于你的问题的最有价值的例子吗?我认为整个方法在这里并不重要,因为您要询问代码的特定部分。
-
c <= 'a' && c >= 'z'这永远不会是真的。除非我遗漏了什么,否则这与比较c <=1 && c >= 26是一样的,这是没有意义的 -
您知道 C# 中的数组是从零开始的,而不是从 1 开始的?
-
这段代码有太多问题了,我建议你专注于一个问题,每个问题问一个问题。