Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 找出其和等于10的前两位数字_C# - Fatal编程技术网

C# 找出其和等于10的前两位数字

C# 找出其和等于10的前两位数字,c#,C#,我有一个整数数组intx[]: int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 我需要找出前两位数字的和等于10 代码如下: Output should like (4 and 6). Output should like (3 and 7). Output should like (2 and 8). Output should like (1 and 9). public string Test() { int

我有一个整数数组
intx[]

int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
我需要找出前两位数字的和等于10

代码如下:

Output should like (4 and 6).
Output should like (3 and 7).
Output should like (2 and 8).
Output should like (1 and 9).

public string Test()
{
    int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int i, j = intx.Length-1;
    string s = "";
    for (i = 0; i < 4; i++)
    {
        if ((intx[i] + intx[j - 1]) == 10)
        {
             s = (intx[i].ToString() + " and " + intx[j - 1].ToString());
        }
        j--;
    }
    return s;
} 
输出应该类似于(4和6)。
输出应该是(3和7)。
输出应该是(2和8)。
输出应该是(1和9)。
公共字符串测试()
{
int[]intx=新的int[]{1,2,3,4,5,6,7,8,9,10};
inti,j=intx.Length-1;
字符串s=“”;
对于(i=0;i<4;i++)
{
如果((intx[i]+intx[j-1])==10)
{
s=(intx[i].ToString()+”和“+intx[j-1].ToString());
}
j--;
}
返回s;
} 
您可以使用LINQ:

int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var twoDigitsSumEquals10 = intx
    .SelectMany((i1, index) =>
        intx.Skip(index + 1)
            .Select(i2 => Tuple.Create(i1, i2)))
    .Where(t => t.Item1 + t.Item2 == 10);
SelectMany
在数组中的所有
int
s和数组中索引大于第一个的所有
int
s之间构建笛卡尔乘积(以防止重复)

测试:

输出:

(1, 9)
(2, 8)
(3, 7)
(4, 6)
或者仅第一个在like
(1和9)
之间带有“and”:

更新:这里没有LINQ也一样:

List<Tuple<int, int>> pairs = new List<Tuple<int, int>>();
for (int i = 0; i < intx.Length - 1; i++)
{
    for (int ii = i + 1; ii < intx.Length; ii++)
    { 
       if(i + ii == 10)
           pairs.Add(Tuple.Create(i, ii));
    }
}
List pairs=新列表();
for(inti=0;i
你不用
s做任何事
你只要重新分配它就行了。尝试将结果添加到列表并返回列表

public List<string> Test()
{
    int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int j = intx.Length-1;
    List<string> result = new List<string>();
    for (int i = 0; i < 4; i++)
    {
        if ((intx[i] + intx[j - 1]) == 10)
        {
             result.Add(intx[i].ToString() + " and " + intx[j--].ToString());
        }
    }
    return result;
} 


foreach(string s in Test())
    Console.WriteLine(s);
公共列表测试()
{
int[]intx=新的int[]{1,2,3,4,5,6,7,8,9,10};
intj=intx.Length-1;
列表结果=新列表();
对于(int i=0;i<4;i++)
{
如果((intx[i]+intx[j-1])==10)
{
结果.Add(intx[i].ToString()+”和“+intx[j-->.ToString());
}
}
返回结果;
} 
foreach(Test()中的字符串s)
控制台。写入线(s);

只返回第一个循环,然后提前退出循环

public string Test()
{
    int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int j = intx.Length-1;
    for (int i = 0; i < 4; i++)
    {
        if ((intx[i] + intx[j - 1]) == 10)
        {
             return (intx[i].ToString() + " and " + intx[j--].ToString());
        }
    }
    return "";
} 
公共字符串测试()
{
int[]intx=新的int[]{1,2,3,4,5,6,7,8,9,10};
intj=intx.Length-1;
对于(int i=0;i<4;i++)
{
如果((intx[i]+intx[j-1])==10)
{
返回(intx[i].ToString()+”和“+intx[j-->.ToString());
}
}
返回“”;
} 

数组总是被排序吗?1,9-2,8-3,7-..怎么样。。。。?!前两个关闭的数字'坐听起来像是你在要求我们做你的家庭作业。。。顺便说一句,为什么1和9不是一个选项?什么是一个封闭的数字?括号在输出中来自哪里?我打算建议您加入
“和”
,这将提供OP所需的输出,只需第一次组合。不需要所有的可能性,我只是提供了一个例子。用户只能请求第一个组合。它可能是10的和,或9的和,等等。只需要第一个组合。@user3391687:我不明白,我已经演示了如何只获得第一个组合。如果您不想阅读我的全部答案,请搜索
“或仅搜索第一个”
;)只需要第一个组合。不需要所有的可能性,我只是提供了一个例子。用户只能请求第一个组合。它可能是10的和,或9的和,等等。只需要第一个组合。
public List<string> Test()
{
    int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int j = intx.Length-1;
    List<string> result = new List<string>();
    for (int i = 0; i < 4; i++)
    {
        if ((intx[i] + intx[j - 1]) == 10)
        {
             result.Add(intx[i].ToString() + " and " + intx[j--].ToString());
        }
    }
    return result;
} 


foreach(string s in Test())
    Console.WriteLine(s);
public string Test()
{
    int[] intx = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int j = intx.Length-1;
    for (int i = 0; i < 4; i++)
    {
        if ((intx[i] + intx[j - 1]) == 10)
        {
             return (intx[i].ToString() + " and " + intx[j--].ToString());
        }
    }
    return "";
}