[英]Changing the While loop to for loop
您好,這里使用while(true)的extractTable方法的人。 根據方法,如果條件失敗,它將是一個無限循環,這是一個糟糕的編程實踐,您可以幫助我解決在每次或每次更改時
private List<Map<String, Map<String, Integer>>> extractTable(XSSFSheet sheet, Cell tablePosition) {
List<Map<String, Map<String, Integer>>> table = new ArrayList<>();
int headerRow = tablePosition.getRowIndex();
int valuesHeaderColumn = tablePosition.getColumnIndex();
// read all columns and rows until finding an empty one
int row = headerRow + 1;
int col = valuesHeaderColumn + 1;
// read all columns starting at col
while (true) {
Map<String, Map<String, Integer>> tableColumn = new HashMap<>();
Cell headerCell = sheet.getRow(headerRow).getCell(col);
if (headerCell == null)
break;
String columnName = headerCell.getStringCellValue().toUpperCase();
if ("".equals(columnName))
break;
// read all rows starting at row
Map<String, Integer> values = new HashMap<>();
while (true) {
Row valueHeaderRow = sheet.getRow(row);
if (valueHeaderRow == null)
break;
Cell valueHeaderCell = valueHeaderRow.getCell(valuesHeaderColumn);
String valueHeader = valueHeaderCell.getStringCellValue();
if ("".equals(valueHeader))
break;
Cell valueCell = sheet.getRow(row).getCell(col);
Integer value = (int) valueCell.getNumericCellValue();
values.put(valueHeader, value);
row++;
}
tableColumn.put(columnName, values);
// Add the columns map to the list
table.add(tableColumn);
col++;
row = headerRow + 1;
}
return table;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.