C# 我怎样才能治好我的病

C# 我怎样才能治好我的病,c#,conditional-statements,C#,Conditional Statements,我想检查一个数组,如果它的三个值之和是0。一个条件是不允许使用三元组(0,0,0) 公共静态列表三和(int[]num) { List returnList=新列表(); 对于(int i=0;i

我想检查一个数组,如果它的三个值之和是0。一个条件是不允许使用三元组(0,0,0)

公共静态列表三和(int[]num)
{
List returnList=新列表();
对于(int i=0;i如果(num[i]+num[j]+num[k]==0&&num[i]您不应该尝试检查它们是否都不等于零,而是检查它们中是否至少有一个不等于零

所以不是

(num[i] !=0 && num[j]!= 0 && num[k]!= 0)
执行此检查:

&& (num[i] !=0 || num[j]!= 0 || num[k]!= 0)
改变

致:


您以前的条件为false;这意味着i、j和k都必须与0不同。
!(i==0 | | j==0 | | k==0)
是您想要做的

我同意这一点:

public static List<List<int>> ThreeSum(int[] num)
{
    List<List<int>> returnList = new List<List<int>>();
    foreach (int i in num)
    {
        foreach (int j in num)
        {
            foreach (int k in num)
            {
                if (i + j + k == 0 && i <= j && j <= k && !(i == 0 || j == 0 || k == 0))
                {
                    returnList.Add(new List<int> { i, j, k });  
                }
            }
        }
    }
    return returnList;
}
public static List<List<int>> ThreeSum(int[] num)
{
    List<List<int>> returnList = new List<List<int>>();
    foreach (List<int> listInt in num.SelectMany(i => num.SelectMany(j => num.Where(k => i + j + k == 0 && i <= j && j <= k && !(i == 0 || j == 0 || k == 0)).Select(k => new List<int> {i, j, k}).Where(listInt => !returnList.Contains(listInt)))))
    {
        returnList.Add(listInt);
    }
    return returnList;
}
公共静态列表三和(int[]num)
{
List returnList=新列表();
foreach(整数中的整数i)
{
foreach(int j in num)
{
foreach(int k in num)
{

如果(i+j+k==0&&i
num[i]!=0 | | num[j]!=0 | | num[k]!=0
?@MagnusHoff是的,这是正确的。谢谢。@FightFlightSky什么?:D@FightFlightSky下次当你有疑问时,用文字写下你的病情
&& !(num[i] == 0 && num[j] == 0 && num[k] == 0)
public static List<List<int>> ThreeSum(int[] num)
{
    List<List<int>> returnList = new List<List<int>>();
    foreach (int i in num)
    {
        foreach (int j in num)
        {
            foreach (int k in num)
            {
                if (i + j + k == 0 && i <= j && j <= k && !(i == 0 || j == 0 || k == 0))
                {
                    returnList.Add(new List<int> { i, j, k });  
                }
            }
        }
    }
    return returnList;
}
public static List<List<int>> ThreeSum(int[] num)
{
    List<List<int>> returnList = new List<List<int>>();
    foreach (List<int> listInt in num.SelectMany(i => num.SelectMany(j => num.Where(k => i + j + k == 0 && i <= j && j <= k && !(i == 0 || j == 0 || k == 0)).Select(k => new List<int> {i, j, k}).Where(listInt => !returnList.Contains(listInt)))))
    {
        returnList.Add(listInt);
    }
    return returnList;
}