缩短if语句的一种方法

本文关键字:一种 方法 if 语句 缩短 | 更新日期: 2023-09-27 18:20:02

我有一个由四个数字组成的数组,需要将其与另一个数字数组进行比较。我应该告诉你这些数字中有多少是正确的,还有多少是正确但不正确的数字。

F.eks:
Code:    1501
Guess:   1305
Right numbers:    3
Right placement:  2

正确的位置很容易。但是"正确的数字"部分有点棘手。我就是这样解决的:

//Check if number exist in context
        Rn = 0;
        for (int g = 0; g < 4; g++)
        {
            resent[g] = 6;
        }
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                if 
                    (
                        guess[i] == Numbers[j] 
                     && guess[i] != resent[0] 
                     && guess[i] != resent[1] 
                     && guess[i] != resent[2] 
                     && guess[i] != resent[3]
                    )
                {
                    Rn++;
                    resent[i] = guess[i];
                }
            }
        }
        ConsolePost("Right Numbers: " + Rn);

有更好的方法吗。或者可以缩短这个时间吗?

类似:

if(guess[i] == Numbers[j] && != resent[0-3])
{
    Something;
}

缩短if语句的一种方法

您可以使用Any()检查是否决定更改数组的大小:

!resent.Any(c=>c==guess[i])

您可以在resent上使用Enumerable.Take(4)和Contains,如:

!resent.Take(4).Contains(guess[i])

所以你的支票可能是:

if(guess[i] == Numbers[j] && !resent.Take(4).Contains(guess[i]))

参见:Enumerable.Take<TSource> Method

从序列

如果resent大小总是4,那么您可以跳过Take(4),而只使用Contains,如:

if(guess[i] == Numbers[j] && !resent.Contains(guess[i]))