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