如何将串联的数组值返回给标签?

时间:2019-04-22 02:04:26

标签: c#

我正在尝试创建一个程序,该程序比较两个数组,然后计算匹配和不匹配的次数。如果存在不匹配项,它将把这些项存储到一个数组中,并告诉我哪些项不匹配。

我的不匹配数组将正确的值返回到列表框,但是我需要将其返回到带有串联值的标签。

到目前为止,我尝试过的唯一不会出错的方法是label.text = string.join(", " mismatched),但它没有返回实际值。

//correct counter
int correct = 0;

//incorrect counter
int incorrect = 0;

ArrayList Mismatch = new ArrayList();

if (A[0] == B[0]) {
    correct++;
} else {
    incorrect++;
    Mismatch.Add("1");
}

if (A[1] == B[1]) {
    correct++;
} else {
    incorrect++;
    Mismatch.Add("2");
}

当我尝试在标签中返回concat值时,它返回“ system.collection ...”。

它应该返回:

如果A [0] = B [0]和A [1] = B [1]匹配,则标签=空值或空白(无关紧要)。

如果A [0] = B [0]但A [1]!= B [1],则标签=“ 2”。

如果都不匹配,则标签返回“ 1、2”

2 个答案:

答案 0 :(得分:2)

使用List代替ArrayList。您还可以使用for循环遍历数组:

int correct = 0;
int incorrect = 0;     
if (A.Length == B.Length)
{
    List<string> Mismatch = new List<string>();
    for(int i = 1; i <= A.Length; i++)
    {
        if (A[i-1] == B[i-1])
        {
            correct++;
        }
        else
        {
            incorrect++;
            Mismatch.Add(i.ToString());
        }
    }
    label1.Text = String.Join(", ", Mismatch);
}

答案 1 :(得分:0)

请参阅我的评论ArrayList。我使用了2个数组和2个列表

private void button1_Click(object sender, EventArgs e)
    {
        string[] A = { "Mathew", "Mark", "Luke", "John" };
        string[] B = { "Peter", "Mark", "Paul", "John" };

        List<string> Mismatch = new List<string>();
        List<string> Matched=new List<string>();
        if (A.Length != B.Length) { return; }
        int i;
        for (i =0; i < A.Length; i++)
        {
            if (A[i] == B[i])
            { Matched.Add($"A and B match with {A[i]} at position {i}"); }
            else
            { Mismatch.Add($"Mismatch at position {i} A contains {A[i]} B contains {B[i]}"); }
        }
        int correct = Matched.Count;
        int incorrect = Mismatch.Count;
        MessageBox.Show($"The number of correct is {correct}{Environment.NewLine}The number of incorrect is {incorrect}");
        label1.Text = String.Join(Environment.NewLine, Mismatch);
        label4.Text = String.Join(Environment.NewLine, Matched);
    }