Java运行报java.lang.Error编译错误,代码是否存在遗漏问题?
问题原因及解决方法
1 核心编译报错原因
你遇到的无明确明细的编译错误,90%以上的概率是公共类名与源文件名不匹配导致的:
Java语法规范明确要求:被public修饰的类,其所在的.java源文件的文件名必须和类名完全一致,大小写也不能有偏差。你当前代码里的公共类名为ifelseloop,所以你的源文件必须命名为ifelseloop.java,如果文件名存在大小写差异、或者名字完全不匹配,就会触发该类编译错误。
2 其他可能的触发场景
如果你确认文件名完全匹配,那大概率是IDE缓存异常导致的伪报错,按对应IDE操作清理缓存重新编译即可:
- Eclipse:点击顶部菜单栏
Project -> Clean,选择当前项目执行清理后重新运行 - IDEA:点击顶部菜单栏
File -> Invalidate Caches...,勾选清理选项后重启IDE重新编译即可
附加代码优化提示
你当前代码里的字符串比较逻辑存在隐藏问题:
Java中==用于比较对象的内存地址,而非字符串的实际内容,要比较两个字符串的内容是否一致,需要调用equals()方法。你可以把判断条件修改为如下格式,避免后续运行时出现逻辑不符合预期的问题:
if ("madras".equals(city)) { System.out.println("the city is not delhi its madras"); }else if("chennai".equals(city)) { System.out.println("the city is not delhi its chennai"); }else if("bartar".equals(city)) { System.out.println("the city is bartar"); }else { System.out.println(city); }
把常量写在equals前面还可以避免空指针异常。
内容的提问来源于stack exchange,提问作者Shubam Koundel
相关产品推荐
相关产品推荐

