知道为什么数组的第二个元素没有被赋值吗?
Any idea why second element of array is not being assigned a value?
我设置了一个包含 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。
我的假设是:
cellsInUse
数组长度准确
- 索引 1 处的单元格值不为零的列表项
new int[int]
会将数组初始化为零;
int[] valueOfCell = new int[cellsInUse.Length];
cellsInUse 是一维数组;
string[] cellsInUse
一维数组的getLength(0)
等同于.length
cellsInUse.length == 2
为真;
cellsInUse.GetLength(0) == 2
为真;
所以 j
和 k
循环循环到 2.
我假设第一个单元格值足够幸运,位于 [2,2] 个单元格的第一个子集中。
cellsInUse.GetLength(0)
应该是 cell.GetLength(0)
=> j 和 cell.GetLength(1)
=> k
我设置了一个包含 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。
我的假设是:
cellsInUse
数组长度准确- 索引 1 处的单元格值不为零的列表项
new int[int]
会将数组初始化为零;
int[] valueOfCell = new int[cellsInUse.Length];
cellsInUse 是一维数组;
string[] cellsInUse
一维数组的getLength(0)
等同于.length
cellsInUse.length == 2
为真;
cellsInUse.GetLength(0) == 2
为真;
所以 j
和 k
循环循环到 2.
我假设第一个单元格值足够幸运,位于 [2,2] 个单元格的第一个子集中。
cellsInUse.GetLength(0)
应该是 cell.GetLength(0)
=> j 和 cell.GetLength(1)
=> k