-4

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

当我尝试使用时:

Integer.parseInt("h");

或者

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

但我期待它像atoi在 c 中一样工作。

我在这里做错了什么?

4

3 回答 3

3

文字“ Stringh”显然不代表一个有效的整数。

假设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;
   }
}
于 2013-01-24T13:28:27.493 回答
1

这仅在您将其解析为String类似于Integer.

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

可以在此处找到您的方法的文档,并且文档通常是开始搜索的好地方。

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

编辑:

如果您想将 a 转换charint,这就是您的答案:get char value in java

于 2013-01-24T13:33:29.623 回答
0

Java 正在做它应该做的事情。在atoi中,当您返回 0 时,您如何知道您的字符串是否包含 0,或者它是否包含不可解析的字符串?Java 通过让您知道您已尝试解析不包含可解析值的字符串来处理此问题……理想情况下,您可以返回并修复传入不可解析值的代码。

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

于 2013-01-24T13:55:08.120 回答