为什么 Integer.parseInt 方法不适用于拆分字符串?

why doesn't Integer.parseInt method work for splitted strings?

我正在尝试使用字符串拆分方法从具有特定格式的字符串中提取数字。 然后我想使用 Integer parseInt 方法将数字作为 int 类型。 这是一个不起作用的示例代码。有人可以帮我解决这个问题吗?

String g = "hi5hi6";

String[] l = new String[2];
l = g.split("hi");

for (String k : l) {
    int p=Integer.parseInt(k);
    System.out.println(p);
}

我收到这个错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at com.company.Main.main(Main.java:36)

这里的问题很可能是 String#split 使您的数组中有一个或多个空元素。只需过滤掉那些,它就会起作用:

String g = "hi5hi6";
String[] parts = g.split("hi");

for (String part : parts) {
    if (!part.isEmpty()) {
        int p = Integer.parseInt(part);
        System.out.println(p);
    }
}

这会打印:

5
6

这些是您数组中的元素 [, 5, 6] 你看到这个问题了吗?第一个元素是空的。

试试这个:

String[] l = new String[2];
l = g.split("hi");

for (String k : l) {
    if (!k.isEmpty()) {
        int p=Integer.parseInt(k);
        System.out.println(p);
    }
}
如果未格式化,

Integer.ParseInt 将始终给您一个数字格式异常。它是一个未经检查的异常,所以程序员应该处理这个。

 String g="hi5hi6";
 String[] l=new String[2];
 l=g.split("hi");

 for(String k:l){
   try
   {
      if (!part.isEmpty()) {
         //the String to int conversion happens here
         int p=Integer.parseInt(k.trim());
         //print out the value after the conversion
         System.out.println(p);
     }
  }
  catch (NumberFormatException nfe)
  {
     System.out.println("NumberFormatException: " + nfe.getMessage());
  }

}