将String String转换为Integer会抛出NullpointerException

时间:2011-10-26 16:03:01

标签: java android

HY!

我想将String解析为Integer。 String类似于系列的格式:SXXEXXX

“守则”应该增加这一集。

赞:S01E01 - > S01E02 另外:S01E100 - > S01E101

代码:

String s = episodes.get(episodes.size()-1);
Log.e("DBManager",s);
if (s.split("E").length <= 2) {
    int i = Integer.getInteger(s.split("E")[1].split(" ")[0]); //NullPointerEx
    return s.split("E")[0]+"E"+String.valueOf(i++);
}

日志:

10-26 15:56:34.635: E/DBManager(932): S00E01

3 个答案:

答案 0 :(得分:2)

Integer.getInteger()不是正确的使用方法。

您应该使用Integer.valueOf()

Integer.getInteger(String s)将返回带有键s的整数系统属性。

出现空指针,因为此方法无法使用您提供的密钥查找属性并返回null。然后,Java尝试将其解包为int和null指针。

答案 1 :(得分:1)

空指针异常正好发生,因为您在字符串中保留前导0。如果你真的需要把它留在那里,下面的代码对我有用:

int i = Integer.parseInt(s.split("E")[1].split(" ")[0]);

答案 2 :(得分:0)

如果我理解正确,您想要将剧集名称拆分为部分,然后获取剧集编号并将其增加1以获得下一集编号。不要多次调用这种拆分方法,只需调用一次。

    String episodeName = episodes.get(episodes.size()-1);
    Log.e("DBManager", episodeName);
    string[] splittedName = episodeName.split("E");
    string returnName = "";

    if (splittedName.length == 2) {
       if (splittedName[1].split(" ").length > 1) {
          // do something if there's a episode name too
       } else {
          // gets the episode number
          int i = Integer.valueOf(splittedName[1]);

          // returns next episode full name
          if (i < 9) {     
             returnName = splittedName[0] + "E0" + String.valueOf(i + 1);
         } else {
             returnName = splittedName[0] + "E" + String.valueOf(i + 1); 
         }
      }
   }

   return returnName;