当前位置: 首页 > 知识库问答 >
问题:

更新迭代器循环中的列表

百里业
2023-03-14

下面的代码尝试迭代excel文件,并将数据加载到列表中

    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class ReadExcel {
        public List<List<String>> resultList;
    
        public List<List<String>> ReadExcelToList(String csvPath) throws IOException {
            try {
    
                FileInputStream excelFile = new FileInputStream(csvPath);
                Workbook workbook = new XSSFWorkbook(excelFile);
                System.out.println(workbook.getSheetName(0));
                Sheet datatypeSheet = workbook.getSheetAt(0);
                Iterator<Row> iterator = datatypeSheet.iterator();
                while (iterator.hasNext()) {
    
                    Row currentRow = iterator.next();
                    Iterator<Cell> cellIterator = currentRow.iterator();
                    List<String> rrow = new ArrayList<>();
                    while (cellIterator.hasNext()) {
    
                        Cell currentCell = cellIterator.next();
                        switch (currentCell.getCellType()) {
                            case Cell.CELL_TYPE_STRING:
                                rrow.add(currentCell.getStringCellValue());
                                break;
                            case Cell.CELL_TYPE_NUMERIC:
                           rrow.add(String.valueOf(currentCell.getNumericCellValue()));
                             break;
                        }
                    }
                    resultList.add(rrow);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return resultList;
        }
    }

java.lang.NullPointerException
    at ReadExcel.readExcelToList(ReadExcel.java:40)
    at BasicCSVReader.main(BasicCSVReader.java:35)

共有1个答案

庞瀚
2023-03-14

您的resultList从未创建过(它是null)。您可以通过如下定义来修复它:

public List<List<String>> resultList = new ArrayList<>();
 类似资料:
  • 我有一个用于队列的迭代器类(实现为循环数组)。我在下面附上代码。问题出在++运算符上。一旦它到达数组的末尾,它就会回到它的开始,因此迭代器会指向第一个元素。它工作得很好,但我没有办法使用这种方法实现then end()迭代器。在队列类中返回begin()和end()迭代器的函数可以在底部看到。end()迭代器应该指向队列的后部,但是当数组已满且后部等于数组的大小时,++运算符将循环返回,而不是让它

  • 本节我们探索的主题是迭代与循环。循环通常在计算机编程用用于自动执行重复性任务。 在Python中最常用的迭代形式就是for循环了。for循环允许你迭代出列表中所有的项,迭代出来后你可以做任何你想做的事情。 比如,我们创建了一个列表,并打印出其中所有元素的平方。 >>> for value in [0, 1, 2, 3, 4, 5]: ... print(value * value) ... 0 1

  • 迭代器无效是如何处理的,而不是循环? 例如,这段代码不起作用,因为迭代器在插入后无效: 但是,如果我用这个for循环替换while循环,它会正确编译和运行: 为什么for循环有效而while循环无效?

  • 我有以下python生成器: 而且我想在Java中实现一个迭代器,它的行为有点像以前的生成器。我试图使用两个内部迭代器,但它不起作用。想法?

  • 我有一个网络应用编程接口,多个列表,和一个从网络应用编程接口查询数据的函数。我已经设法手动更新列表,一次一个。然而,数据有多个列(列表将包含列的数据),并且有38个列表并手动调用函数来更新它们是很麻烦的。我设计了一个简短的for循环来迭代列表,并相应地更新它们。但是,更新后的列表不会返回;或者甚至没有更新。如何在代码中修复此问题?请参阅下面的代码,虽然我不能提供API上的数据: =========

  • 本文向大家介绍列表中特定于Python索引的循环迭代,包括了列表中特定于Python索引的循环迭代的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序来循环访问给定列表中的列表。让我们看一下解决问题的步骤 初始化列表和索引。 使用len查找列表的长度。 使用长度遍历列表。 使用index%length查找元素的索引。 打印元素。 递增索引。 这是一个简单的循环迭代。您可以编写它