我正在尝试将.csv表添加到我的2d数组中,但是想要整理掉所有空单元格。
这就是我的代码目前的样子:
try {
BufferedReader reader = new BufferedReader(new FileReader(upload.pathName));
String strLine;
for (int i = 0; (strLine = reader.readLine()) != null; i++) {
Scanner scanner = new Scanner(strLine);
scanner.useDelimiter(";");
int j = 0;
while (scanner.hasNext()) {
try {
if (scanner.next() == null || scanner.next().equals("")) {
System.out.println("this cell is empty");
j++;
} else {
array[i][j] = scanner.next();
j++;
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
scanner.close();
}
reader.close();
} catch (Exception abcdefg) {
//Exception
}
我的.csv看起来像这样:
value1;value2;value3;value5;value6;value7
value8;value9;value10;...
这条线甚至可以工作吗?:
if (scanner.next() == null || scanner.next().equals(""))
有人知道为什么我只使用if(scanner.next()== null)或者if(scanner.next()。equals(""))j循环直到它有值5然后激活Exception abcdefg,但是当我使用if时(scanner.inxt()== null || scanner.next()。equals(""))j只循环直到它有值3然后触发异常abcdefg
我错过了什么/我的错误在哪里?为什么它会跳进Exception,即使还有一些非空的单元格?
答案 0 :(得分:3)
您的if条件没问题,但您不想再拨打scanner.next()
两次,这样会吃掉'一些输入。
您可能希望将scanner.next()
的值设置为变量,然后检查if条件中的变量值:
String input = scanner.next();
if(input == null || input.equals("")){
//Do something
}
答案 1 :(得分:1)
将scanner.next()
值存储到如下变量中。在条件中使用变量。由于您正在调用next()
两次,因此指针移动两次。
String value = Scanner.next()
为什么不使用https://commons.apache.org/proper/commons-csv/user-guide.html之类的内容来阅读CSV。有许多这样的库可用于读取CSV文件。