为什么这返回错误

本文关键字:错误 返回 为什么 | 更新日期: 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永远不会等于12,因为这个检查已经在for语句中。您应该删除此检查以清除代码。

第三,这个检查c <= 'a' && c >= 'z'总是假的,因为'z' > 'a'.您可能应该使用此c >= 'a' && c <= 'z'

祝你好运,会更加小心!