【问题标题】:Any idea why second element of array is not being assigned a value?知道为什么数组的第二个元素没有被赋值吗?
【发布时间】:2019-08-02 18:44:09
【问题描述】:

我已经建立了一个包含 26 x 26 单元格对象网格的电子表格程序。我设置了一种方法来处理用户输入的公式。例如,用户可以输入 =A1+A2,该方法检查单元格 A1 和 A2 的值并将它们相加。由于某种原因,第二个单元格的值没有分配给数组。

https://pasteboard.co/IqRO23M.png

代码继续其他运算符的 switch case 语句,但这对于这个问题并不重要。

public static void ProcessBasicFormula(Cell selectedCell,Cell[,] 
cell,string[] cellsInUse, char operatorInUse)
    {
        int[] valueOfCell = new int[cellsInUse.Length]; //valueOfCell and 
        cellInUse have same length
        int counter = 0;
        double answer = 0.0;
        switch(operatorInUse)
        {
            case ('+'):
             for (int i = 0; i < cellsInUse.Length; i++)
             {
               for (int j = 0; j < cellsInUse.GetLength(0); j++)
               {
                for (int k = 0; k < cellsInUse.GetLength(0); k++)
                {
                  if (cellsInUse[i] == cell[j, k].CellID)
                  {
                    valueOfCell[counter] =Convert.ToInt32(cell[j,k].Text);
                    counter++;
                  }
                 }
                }
               }
          answer = valueOfCell[0] + valueOfCell[1];
          break;

我希望将两个单元格的值相加,但相反,我得到的第一个值加了 0。

【问题讨论】:

    标签: c# winforms textbox


    【解决方案1】:

    我的假设是:

    1. cellsInUse 数组长度准确
    2. 列表项索引 1 处的单元格值不为零

    new int[int] 会将数组初始化为零; int[] valueOfCell = new int[cellsInUse.Length];

    cellsInUse 是一维数组;

    string[] cellsInUse
    

    一维数组的getLength(0).length相同

    cellsInUse.length == 2 为真; cellsInUse.GetLength(0) == 2 是真的;

    所以jk 循环循环到2。

    我假设第一个单元格值幸运地位于 [2,2] 单元格的第一个子集中。

    cellsInUse.GetLength(0) 应该是 cell.GetLength(0) => j 和 cell.GetLength(1) => k

    【讨论】:

    • 这如何回答这个问题?您做了很多假设,但没有清楚地说明问题所在。
    • 您好,vea 先生,感谢您的回答。事实证明,'cellIInUse' 不是我想要调整 'j' 和 'k' 的数组长度。正确的逻辑是以单元格数组“单元格”的长度为条件,该单元格数组“单元格”作为参数传递给方法。我花了比我自豪的时间更长的时间来承认这个错误,因为它隐藏在明显的视线中。无论如何,谢谢你的回答。我会接受它作为正确的。
    猜你喜欢
    • 2021-11-15
    • 2019-08-11
    • 2022-11-23
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多