我得到:java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
当我尝试使用时:
Integer.parseInt("h");
或者
Integer.parseInt("h".toString());
但我期待它像atoi
在 c 中一样工作。
我在这里做错了什么?
文字“ String
h”显然不代表一个有效的整数。
假设h
是你的String
变量,你不需要使用引号:
String h = "1234";
Integer.parseInt(h);
更新: 函数atoi返回输入参数的整数值,如果输入值无效则返回零。在 Java 中,你可以这样写:
public static int javaAToI(String text) {
try {
return Integer.parseInt(text);
} catch (NumberFormatException e) {
return 0;
}
}
这仅在您将其解析为String
类似于Integer
.
您正在将其解析为"h"
无法解释为整数的文字。如果您解析它"123"
,它将起作用。
可以在此处找到您的方法的文档,并且文档通常是开始搜索的好地方。
正如其他人还建议的那样-如果h
是您的变量,请以这种方式解析它:Integer.parseInt(h);
.
编辑:
如果您想将 a 转换char
为int
,这就是您的答案:get char value in java
Java 正在做它应该做的事情。在atoi
中,当您返回 0 时,您如何知道您的字符串是否包含 0,或者它是否包含不可解析的字符串?Java 通过让您知道您已尝试解析不包含可解析值的字符串来处理此问题……理想情况下,您可以返回并修复传入不可解析值的代码。
在您的情况下,如果您想像 C 一样处理这种情况,如果您捕获到 NumberFormatException,您可以只返回一个 0。(如果您可以返回并确保您没有传递错误的字符串,那可能会更好,但这并不总是可能的。)