解析包含非整数的字符串时的NumberFormatException

时间:2013-01-24 13:27:01

标签: java integer

我得到:java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

当我尝试使用时:

Integer.parseInt("h");

Integer.parseInt("h".toString());

但我希望它在c。{/ p>中像atoi一样工作

我在这里做错了什么?

3 个答案:

答案 0 :(得分:3)

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;
   }
}

答案 1 :(得分:1)

仅当您解析String类似于Integer的情况时才会有效。

您正在将其解析为文字"h",不能将其解释为整数。如果您解析它"123"它将起作用。

您的方法文档可以找到here,文档通常是开始搜索的好地方。

正如其他人也建议的那样 - 如果h是您的变量,请以这种方式解析它:Integer.parseInt(h);

修改

如果您想将char转换为int,请回答:get char value in java

答案 2 :(得分:0)

Java正在做这里应该做的事情。在atoi中,当你返回0时,你怎么知道你的字符串是否包含0,或者它是否有一个不可解析的字符串? Java通过让你知道你试图解析一个不包含可解析值的字符串来解决这个问题...理想情况下你可以返回并修复传递不可解析值的代码。

在你的情况下,如果你想像C一样处理这种情况,你可以在捕获NumberFormatException时返回0。 (如果你能回去并确保你没有传递不好的字符串可能会更好,但这并不总是可行的。)