gpt4 book ai didi

java - 如何在 while 循环中增加行计数器变量?

转载 作者:行者123 更新时间:2023-12-01 08:50:04 25 4
gpt4 key购买 nike

我试图将第一个单元格中包含数据的每一行读入对象的 ArrayList 中。我的问题是我的代码似乎没有将计数器增加到第一行之后。我错过了一些简单的事情吗?

代码

        try
{
wb = new XSSFWorkbook(new FileInputStream(fileName));
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}

XSSFSheet sheet = wb.getSheetAt(2);
ArrayList<Object> obj = new ArrayList<Object>();
int rowIndex = 0;
int cellIndex = 0;
XSSFRow row = sheet.getRow(rowIndex);
Iterator<Cell> rowItr = row.iterator();

while(rowIndex <= sheet.getLastRowNum())
{
if(row.getCell(0) == null)
{
continue;
}
else
{
while(rowItr.hasNext() && rowItr.next() != null)
{
XSSFCell cell = row.getCell(cellIndex);

if(cell == null)
{
continue;
}
else
{
obj.add(row.getCell(cellIndex).toString());
}
cellIndex++;
}

rowIndex++;
cellIndex = 0;

}

System.out.println(obj.toString());
}
rowIndex++;
}
}

输出

[ValuSmart Series 1120 Double Hung]

...由于工作表中有 72 行,因此我得到此输出 72 次

隔离循环

ArrayList<Object> obj = new ArrayList<Object>();
int rowCounter = 16;
int x = 0;

while(rowCounter <= 21)
{

XSSFRow row = sheet.getRow(rowCounter);
Iterator<Cell> rowItr = row.iterator();

while(rowItr.hasNext() && rowItr.next() != null)
{

XSSFCell cell = row.getCell(x);


if(cell == null)
{
continue;
}
else
{

obj.add(row.getCell(x).toString());
}
x++;

}

rowCounter++;
x = 0;
}
System.out.println(obj.toString());

最佳答案

您不会在任何地方选择下一行,并且您的循环会令人困惑,并且会在基于索引和基于迭代器的查找之间切换。尝试一个简单的增强版循环:

for (Row row : sheet) {
for (Cell cell : row) {
if (cell != null) {
obj.add(row.getCell(x).toString());
}
}
}
System.out.println(obj.toString());

关于java - 如何在 while 循环中增加行计数器变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42449684/

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