如何比较两个2d阵列

时间:2011-04-28 10:06:59

标签: c# .net winforms multidimensional-array

我正在使用visual studio c#win form。 。 。我有2d文本框数组,我有另一个2d数组的有效解决数独,我想比较文本框的文本到数独数组,但它不工作。这是我的代码:

        private void Isvalid()
        {
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    if (copy[i, j] == textbox[i, j].Text)
                        isvalid = true;


        }
        private void check()
        {
            Isvalid();
            if (isvalid)
                MessageBox.Show("NO");
            else
                MessageBox.Show("YES");

        }

任何人都可以帮助我。 。 。 THANx提前。 。 。 谢谢所有回答的人。 。

4 个答案:

答案 0 :(得分:1)

我会在

上放一个断点
if (copy[i, j] == textbox[i, j].Text)

行并直观地查看您在“文本”框中看到的内容是否是数组包含的内容。 它可能就像需要进行不区分大小写的比较一样简单。

答案 1 :(得分:1)

textbox [i,j] .Text

这里需要在比较之前将文本框矩阵中的值转换为整数。这将解决问题。

此外,您需要将invalid设置为false并使其成为真正的断开循环

答案 2 :(得分:1)

如果数组不相等,则不(重新)将isvalid变量设置为false。

您通过共享变量传递Isvalid方法的结果。如果将比较结果作为方法结果传递,则代码将更加清晰。

private bool Isvalid()
{
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            if (copy[i, j] != textbox[i, j].Text) {
                return false;  // If one is not equal, the two arrays differ
            }
        }
    }
    return true;
}

现在你可以测试:

if (Isvalid()) {
   // your code here
}

如果将两个数组作为参数传递,那就更好了。

答案 3 :(得分:0)

试试这个:

private void Isvalid()
{
    isvalid = true;
    for (int i = 0; i < 4; i++)
        for (int j = 0; j < 4; j++)
            if (copy[i, j] != textbox[i, j].Text)
            {
                isvalid = false;
                return;
            }
}

在例行程序中,只要一个数字匹配,就会将isvalid设置为true。如果数字不匹配,您宁愿将其设置为false。