Java中if(line[2] == "Inactive")条件为真却未执行的问题
Java if条件判断失效问题解决方案
问题根因
Java中的==运算符在处理引用类型数据时,比较的是对象的内存地址而非实际存储的内容。String属于引用类型,你代码中从文件读取拆分得到的line[2]是运行时生成的新字符串对象,和代码中写死的字符串常量"Inactive"存储在不同的内存地址,因此==判断返回false,不会进入预期的if分支。
修复方法
将字符串比较的逻辑改为使用String类自带的equals()方法,该方法会逐字符对比两个字符串的实际内容:
将问题行:
if(line[2] == "Inactive")
修改为:
// 把字符串常量放在前面调用equals,可以避免line[2]为null时抛出空指针异常 if("Inactive".equals(line[2]))
额外优化建议
你当前的while循环判断逻辑存在不规范的问题:Scanner.nextLine()方法读取到文件末尾时不会返回null,而是直接抛出NoSuchElementException,你当前靠捕获异常处理正常读取结束的流程不符合编码规范,可以调整为:
// 先判断是否还有下一行,再读取 while(reader.hasNextLine()) { currentline = reader.nextLine(); // 原有逻辑保持不变 }
内容的提问来源于stack exchange,提问作者ronron681
相关产品推荐
相关产品推荐

