仅用循环比较两个数组

Nir*_*rre 5 c# arrays compare

我被数组困住了,需要一些帮助。

我有两个数组,我正在使用 foreach 循环比较它。我希望程序只在有两个数字winningNumberssomeNumbers. 如果只有一场比赛,输出应该是“你输了”

(我必须使用循环来解决这个问题)

int[] someNumbers = { 1, 2, 3, 4, 5, 6 };
int[] winningNumbers = { 1, 2, 13, 14, 15, 16 };
bool winning = false;

foreach (var item1 in someNumbers)
{
    foreach (var item2 in winningNumbers)
    {
        if (item1 == item2)
        {
            winning = true;
        }
    }
}

if (winning == true )
{
    Console.WriteLine("You won");
}

else
{
    Console.WriteLine("You lost");
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*ael 3

每场比赛使用一个计数器。如果>= 2,则报告胜利。如果您要求它恰好是两个匹配项,请删除 > 运算符。在这里尝试一下: https: //dotnetfiddle.net/sjYbYk

编辑:添加字符串生成器以报告获胜比赛。

using System;
using System.Text;
                    
public class Program
{
    public static void Main()
    {
            int[] someNumbers = { 1, 2, 3, 4, 5, 6 };
            int[] winningNumbers = { 1, 2, 13, 14, 15, 16 };
            int matched = 0;
            StringBuilder sb = new StringBuilder();
            sb.Append("You Matched ");
            foreach (var item1 in someNumbers)
            {
                foreach (var item2 in winningNumbers)
                {
                    if (item1 == item2)
                    {
                        matched++;
                        sb.Append(item1 + ",");
                    }
                }
            }

            if (matched >= 2 )
            {
                Console.WriteLine("You won");
                Console.WriteLine(sb.ToString().TrimEnd(','));
            }

            else
            {
                Console.WriteLine("You lost");
            }
    }
}
Run Code Online (Sandbox Code Playgroud)