0

所以我有一个 5 x 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);
}
4

3 回答 3

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(即用户输入,然后您告诉他们rowand col),那么您将需要两个循环,比较A[row,col]to X,如果找到匹配项则返回row并返回给用户。col

于 2013-04-15T10:16:18.710 回答
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;
}
于 2013-04-15T10:16:37.567 回答
0

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

于 2013-04-15T10:18:30.807 回答