2D阵列查看器和编辑器的错误。 C#WPF

时间:2012-02-10 20:08:28

标签: c# wpf iterator calculator multidimensional-array

第一次海报很抱歉,如果这太长了,但是我已经撞墙了,不知道还有什么可以尝试。

我正在使用C#和WPF制作矩阵计算器。

我花了最后一小时试图找出我的Array Iterator查看和编辑2D NxN数组中的值有什么问题。

为了更好地了解我的项目到目前为止要求用户输入大小n来制作数组。它将生成一个大小为NxN为0的2D int数组,并从默认位置(0,0)开始。从那里,用户可以编辑从左到右,从上到下编辑整个数组的值。

我有2个私有全局整数,一个跟踪行位置,一个跟踪列位置并操纵这些数字来编辑数组的那一部分。

迭代开始精细(0,0)> (0,1);而不是从(0,1)> (0,2)它应该跳到(1,1)。我已经无数次超过了我的逻辑而无法找到我在做错的地方。

我还没有测试从右到左,从下到上的遍历,但由于它的逻辑几乎完全相同,我认为它将具有我目前遇到的相同问题。

非常感谢,如果有人可以指出我的逻辑在哪里有缺陷,那么我可以继续编写其他部分的代码。

我的代码如下:

private int[,] matrix; //Matrix currently being edited
private int row; //keeps track of current row position and set to 0 when matrix is made
private int col; //Keeps track of current column position and set to 0 when matrix is made

private void previousPos_Click(object sender, RoutedEventArgs e)
    {
        Console.WriteLine("row " + row + "\r\n col " + col);
        if (row < 0 && col < 0)
        {
            textBlock1.Text = "No previous values to edit";
            row = 0;
            col = 0;
            positionDisplay.Text = "" + col + ", " + row;
        }
        else if (row < 0 && col < 3)
        {
            setValue(row, col, valueDisplay.Text);
            row = 2;
            col -= 1;
            displayMatrix(matrix);
            positionDisplay.Text = "" + col + ", " + row;
        }
        else
        {
            setValue(row, col, valueDisplay.Text);
            row -= 1;
            displayMatrix(matrix);
            positionDisplay.Text = "" + col + ", " + row;
        }
    }

private void nextPos_Click(object sender, RoutedEventArgs e)
    {
        Console.WriteLine("row "+row+"\r\ncol "+col);
        if (row >= matrix.GetLength(0) && col >= matrix.GetLength(1))
        {
            textBlock1.Text = "No more values to edit";
            row = matrix.GetLength(0) - 1;
            col = matrix.GetLength(1) - 1;
            positionDisplay.Text = "" + col + ", " + row;
        }
        else if (row >= matrix.GetLength(0) && col < matrix.GetLength(1))
        {
            setValue(row, col, valueDisplay.Text);
            col += 1;
            row = 0;
            displayMatrix(matrix);
            positionDisplay.Text = "" + col + ", " + row;
        }
        else
        {
            setValue(row, col, valueDisplay.Text);
            row += 1;
            displayMatrix(matrix);
            positionDisplay.Text = "" + col + ", " + row;
        }
    }

    public void setValue(int curRow, int curCol, string value)
    {
        col = curRow;
        row = curCol;
        try
        {
            matrix[row, col] = int.Parse(value);   
        }
        catch(Exception)
        {
            string messageBoxText = "Please input a valid number";
            string caption = "Warning";
            MessageBoxButton button = MessageBoxButton.OK;
            MessageBoxImage icon = MessageBoxImage.Warning;
            MessageBox.Show(messageBoxText, caption, button, icon);
        }
    }

编辑:修复了我看到的错字,并愿意根据请求发布更多/其余代码。

1 个答案:

答案 0 :(得分:3)

你在setValue()中有这个错误:

 col = curRow;
 row = curCol;

列等于行?错字!