我正在编写一个程序,我希望在文档中使用如下所示的ID迭代某些属性:
"id": "competitor:2672"
我想根据从excel文件中读取的数据进行迭代。唯一的问题是,在所述excel文件中,ID仅作为
给出2672
列中的"竞争者ID"。
我无法将给定的String解析为整数。比较两个ID的最佳和最干净的方法是什么
使用apache POI我想做类似的事情
String COLUMN_ID = "G" // Column letter in which the IDs are stored
Document home = competitors.get(0);
Document away = competitors.get(1);
String homeIDString = home.get("id").toString();
int homeID = //how to get this from the upper string?
String awayIDString = away.get("id").toString();
int awayID = //how to get this from the upper string?
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
XSSFSheet sheet = workbook.getSheetAt(0);
for (int row=0; <something>; row++) {
XSSFCell cell = sheet.getRow(row).getCell(CellReference.convertColStringToIndex(COLUMN_ID));
if (cell.getCellTypeEnum().equals(NUMERIC)) int cellValue = (int) cell.getNumericValue();
if (cellValue == homeID) { do something }
else if (cellValue == awayID) { do something }
}
答案 0 :(得分:3)
您目前正在获得NumberFormatException
,因为您尝试将String
转换为int
,然后再与int
进行比较。
@azurefrog说的是,您可以尝试将int
转换为String
(反之亦然),这样会很好。
strVariable.endsWith(String.valueOf(intVariable))
但是,"id": "competitor:2672"
和72
也会返回true
这个问题。
更好的方法是在将competitor:
转换为int之前使用子字符串删除2672
String myInput = "competitor:2672"; // "competitor:2672"
myInput = myInput.substring(11); // "2672"
int myValue = Integer.parseInt(myInput); // 2672