gpt4 book ai didi

C# Jagged arrays for loop 实现问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:43 24 4
gpt4 key购买 nike

我找不到如何使用 for 循环实现锯齿状数组。我试过了,但是只有最后一个较小的数组变成了锯齿状的数组项。

string[][] allSheets = new string[size][];

这就是我声明的方式。下面是我如何获取 allSheets[number] 元素。

public string[] get_Sheets(int colNum)
{
CellReference[] cr = new CellReference[rows_.Length];
ISheet sheet = wb.GetSheetAt(0);
IRow[] row = new IRow[rows_.Length];
ICell[] cell = new ICell[rows_.Length];
string[] cellResult = new string[rows_.Length];
for (int i = 0; i < cr.Length; i++)
{
cr[i] = new CellReference(rows_[i] + colNum);
row[i] = sheet.GetRow(cr[i].Row);
cell[i] = row[i].GetCell(cr[i].Col);
cellResult[i] = cell[i].ToString();
}
return cellResult;
}

我的两个 for 循环看起来像这样:

for (int ii = 0; ii < size; ii++)
{
for (int jj = 2; jj < size; jj++)
{
allSheets[ii] = get_Sheets(jj);

}
}

请注意我是如何从 2 开始 jj 的。我不得不这样做,因为这是 excel 文件的工作方式..您可以清楚地看到,尽管如此,我的每个 allSheets[ii] 都将成为 for 循环中最后一个可能的 j 数字。我曾尝试交换循环,所以 i 先开始,但结果是一样的。

最佳答案

我认为你应该只使用一个循环,因为你在这里只迭代主数组。您不必在此级别上处理 2 个维度。第二个循环(针对另一个维度)已经在 get_Sheets 中。

for (int ii = 0; ii < size; ii++)
{
allSheets[ii] = get_Sheets(ii + 2);
}

请注意,您的 2 个 for 循环不是并行执行的,它们是嵌套的。内循环在外循环的每次迭代中迭代 size - 2 次。这意味着您将获得 size * (size - 2) 迭代。这不是你想要的。

执行此操作的另一种方法是 for 循环的鲜为人知的功能。 (这可能是您打算对 2 个循环执行的操作。)

for (int ii = 0, jj = 2; ii < size; ii++, jj++)
{
allSheets[ii] = get_Sheets(jj);
}

关于C# Jagged arrays for loop 实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52468475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com