Java中使用Scanner比较当前行与上一行时出现空指针异常
解决Scanner逐行读取文件时的空指针异常问题
嘿,我瞅见你这段用Scanner读文件的代码触发空指针异常了,咱们来一步步搞定它~
首先先看看你贴的原代码:
String previousLine = null; while (scanner.hasNextLine()) { String line = scanner.nextLine(); if(line.contains("Importing") && !previousLine.contains("Importing")) { { System.out.println(previousLine); } previousLine = line; } }
问题根源
第一次进入循环的时候,previousLine还是初始的null值,这时候你调用!previousLine.contains("Importing")就会直接抛出空指针异常——毕竟null对象根本没法调用任何方法嘛!而且原代码里previousLine = line放在if块内部,会导致不满足条件时上一行内容不会更新,后续循环逻辑也会出错。
修复后的代码
咱们只需要加个previousLine != null的前置检查,同时把previousLine的更新移到循环末尾,确保每次循环都能正确更新上一行内容:
String previousLine = null; while (scanner.hasNextLine()) { String line = scanner.nextLine(); // 先确保上一行不为空,再执行包含性对比 if(previousLine != null && line.contains("Importing") && !previousLine.contains("Importing")) { System.out.println(previousLine); } // 每次循环都更新上一行,保证后续对比的准确性 previousLine = line; }
内容的提问来源于stack exchange,提问作者user2628187
相关产品推荐
相关产品推荐

