【发布时间】:2017-12-06 23:45:05
【问题描述】:
我知道 long val = 1_000_000L; 这种格式在 java 中是有效的,但我发现不符合条件的是 Long#parseLong 方法的行为,如果它作为 String 传递,它不会解析这种格式,我尝试了下面的代码,我总是得到异常:
String h = "1_000_000L";
long val = 1_000_000L;
System.out.printf("this a valid format : %d\n", val);
try {
Long m = Long.parseLong(h);
System.out.println(m);
} catch (NumberFormatException e) {
System.out.printf("cannot parse this number : %s\n", h);
}
注意。我正在构建类似于个人 java 编译器 的东西,我希望它能够在不摆脱下划线格式的情况下工作。
【问题讨论】:
-
哈哈...我以前从未在 Java 程序中使用过下划线。另外,祝你的个人 Java 编译器好运(如果我问为什么?)。我做了一个个人Java方言(JavaX),但它转译成Java源代码,然后调用Eclipse编译器。
-
Long API 是很久以前决定的。您可能会通过更改其语义来破坏现有程序。
-
我建议您在编译器工作的这一点上了解更多关于标记器的信息。
-
@StefanReich 假设这是一个学习问题
-
检查 parseLong 的工作原理:pastebin.com/gd8hUA7e
标签: java parsing numberformatexception