【问题标题】:How to compare two 2D arrays in C#如何在 C# 中比较两个二维数组
【发布时间】:2013-04-28 15:07:47
【问题描述】:

我有两个不同长度的二维数组,都是双精度类型。我正在尝试将第一个数组的内容与第二个数组的内容进行比较。但是,当第一个元素中的一个值在第二个元素中等于一个时,分数会增加,而不是当 i 和 j 的值都等于 x 和 y 的值时。有人可以帮我吗?我正在使用的代码可以在下面找到:

    if (result1.Length <= result2.Length)
            {
                for (int i = 0; i < 2; i++)
                {
                    for (int j = 0; j < result1.Length / 2; j++)
                    {
                        for (int x = 0; x < 2; x++)
                        {
                            for (int y = 0; y < result2.Length / 2; y++)
                            {
                                if (result1.GetValue(i, j).Equals(result2.GetValue(x, y)))
                                {
                                    score++;

                                }
                            }
                        }
                    }
                }

【问题讨论】:

    标签: c# arrays comparison 2d


    【解决方案1】:

    根据您的 cmets 更新,下面,我认为您需要同时检查 first-column-equality 和 second-column-equality,并且只有在两者匹配时才增加分数。

    if (result1.Length <= result2.Length)
    {
        for(int i = 0; i < result1.Length; i++)
        {
            for(int j = 0; j < result2.Length; j++)
            {
                if (result1[i,0] == result2[j,0] && result1[i,1] == result2[j,1])
                {
                    score++;
                }
            }
        }
    }
    

    【讨论】:

    • 我要做的是在 result2 中的每个元素中搜索 result1 中的每个元素。结果是从具有两列的文本文件中获得的,因此需要使用二维数组来存储结果。分数将用于比较数组的相似程度。我还必须选择它们相似的数组的开始和结束位置,但是一旦正确比较了元素,我就会处理这个问题。
    • 是否result1代表文本文件的第一列,result2代表第二列?你能提供一些示例输入和输出吗?
    • result1 是一个文本文件,result2 是另一个文本文件。
    • 结果1 -5 1 2 1 -4 2.66667 2 0.6 5 0.625 -5 1 2 1 -4 2.66667 2 0.6 2 1 0 1.66667 -2 0.6 0 1.66667 2 0.6 0 1.662667 -4 2 0 1 0.3 2 1.42857
    • 结果2 3 5.42857 0 0.608696 0 3.28571 -3 0.0921053 3 5.42857 0 0.608696 0 3.28571 -8 0.0777778 1 3 -1 0.333333 0 3 5 0.394737 3 5.42857 0 0.608696 0 3.28571 -3 0.0921053 3 5.42857 0 0.608696 0 3.2857 0 0.6.42857 0 0.608696 0 3.28571 -3.28571-80 3.28571-80 3.28571-80 3.28571 -8 0.2.28571 0.077770 0.628576 0 0.2.28571 -> 0.077777> 0.077777>>>>>> 1
    【解决方案2】:

    试试吧:

    if(result1[i,j] == result2[i,j])
    score++;
    

    【讨论】:

    • 还是不行。问题是它只比较 i 值而不是 i 和 j 值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    相关资源
    最近更新 更多