IntelliJ社区版更新后执行Java代码抛出NumberFormatException求助
解决Java NumberFormatException的问题
兄弟,我一眼就揪出问题所在了——你贴的代码和抛出异常的代码根本不是同一个!
你看异常信息里明确指向:
Exception in thread "main" java.lang.NumberFormatException: For input string: "gosho"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at P01_PersonalTitles.main(P01_PersonalTitles.java:7)
异常来自P01_PersonalTitles.java类的第7行,而你贴的是asdasd.java——这个类里只是读取字符串再输出,完全没有调用Double.parseDouble()这类解析数字的方法,根本不可能抛出这个错误。
给你几个具体的解决步骤:
- 先检查IntelliJ右上角的运行配置:是不是不小心选了
P01_PersonalTitles而不是你写的asdasd? - 如果确实要运行
asdasd类,直接右键点击这个类的代码区域,选择Run 'asdasd.main()',就能正确执行你那段字符串处理代码了。 - 要是你其实是想运行
P01_PersonalTitles,那得去这个类的第7行看看:你肯定是把输入的字符串(比如"gosho")当成数字去解析了,比如写了Double.parseDouble(scanner.nextLine())这类代码。这时候要么修改输入为合法数字,要么给代码加个异常处理,比如用try-catch捕获错误:
import java.util.Scanner; public class P01_PersonalTitles { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个数字:"); String input = scanner.nextLine(); try { double num = Double.parseDouble(input); // 这里写你后续的业务逻辑 System.out.println("你输入的数字是:" + num); } catch (NumberFormatException e) { System.out.println("输入的不是有效数字,请重新输入!"); } scanner.close(); } }
内容的提问来源于stack exchange,提问作者Georgi eLaZizY Georgiev
相关产品推荐
相关产品推荐

