从行和列索引中查找数组中的值

时间:2013-04-15 10:13:37

标签: c# arrays

所以我有一个5乘6的二维数组(A)。从这个数组(A)我想根据用户输入的行和列返回一个值。我到目前为止......

private int FindValue(int[,] A, int row, int col)
{
    richTextBox1.Clear();

    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            if (A[i, j] == A)
            {
                return A[i, j];
            }
        }
    }

    return -1;
}

private void button3_Click(object sender, EventArgs e)
{
    int row = int.Parse(textBox1.Text);
    int col = int.Parse(textBox2.Text);
}

3 个答案:

答案 0 :(得分:2)

如果用户同时输入rowcol,则无需搜索;不需要循环。您只需要根据数组的限制检查输入的数组坐标,并在正确时返回A[row,col],或者在错误时返回-1

private int FindValue(int[,] A, int row, int col) {
    if (row < 0 || row >= 5 || col < 0 || col >= 6) return -1;
    return A[row, col];
}

如果您在数组中搜索(即用户输入X,并告诉他们rowcol)那么您会需要两个循环,将A[row,col]X进行比较,如果找到匹配项,则将rowcol返回给用户。

答案 1 :(得分:2)

不确定为什么要检查

 if (A[i, j] == A)

而你只需返回:

private int FindValue(int[,] A, int row, int col)
{
    if (row >= 0 &&  row < A.GetLength(0) && col >= 0 && col < A.GetLength(1))
        return A[row, col];
    else
        return -1;
}

答案 2 :(得分:0)

更新:如果你想从A [,]中获取值,你不需要循环。 A[i,j]就足够了。另外不要忘记数组索引以0开头。