Eclipse中转换用户输入为int并打印报错:Integer无法解析
问题解决方案
错误原因分析
import java.lang.Integer属于完全多余的代码:Java会自动导入java.lang包下的所有类,手动写这行不仅没用,反而可能触发Eclipse的解析缓存异常,导致第一个错误。Integer无法解析主要是因为多余的import引发的解析冲突,再加上代码里存在输入读取的逻辑问题。
修复步骤
删除多余的导入语句
直接删掉第2行的import java.lang.Integer;,这行代码毫无意义,反而添乱。修正输入读取逻辑
你调用了两次scan.nextLine(),第一次读取的用户输入被直接丢弃,第二次才读取输入转整数——这会导致用户输入一次后程序卡住,或者读到空字符串抛出格式异常。把多余的scan.nextLine();删掉即可。清理Eclipse项目缓存
右键你的项目 → 选择Clean...→ 选中当前项目后执行清理,解决Eclipse可能存在的构建缓存问题。
修正后的完整代码
import java.util.Scanner; public class MyFirstProgram { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Hello world!"); int x = Integer.valueOf(scan.nextLine()); System.out.print(x); // 用完关闭Scanner,养成良好习惯 scan.close(); } }
额外建议
- 永远不要手动导入
java.lang下的类,编译器会自动处理。 - 如果清理后还是报错,检查项目的JRE配置:右键项目 →
Properties→Java Build Path,确保JRE System Library是正常可用的JDK/JRE,没有损坏。 - 可以加个输入校验,避免用户输入非整数时崩溃:
import java.util.Scanner; public class MyFirstProgram { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Hello world!"); System.out.print("请输入一个整数:"); String input = scan.nextLine(); try { int x = Integer.parseInt(input); // parseInt直接返回int,比valueOf更直接 System.out.println("你输入的数字是:" + x); } catch (NumberFormatException e) { System.out.println("输入无效,请输入合法整数!"); } scan.close(); } }
内容的提问来源于stack exchange,提问作者Richard Mayer
相关产品推荐
相关产品推荐

