【问题标题】:Java: Index 0 out of bounds for length 0 [duplicate]Java:索引0超出长度0的范围[重复]
【发布时间】:2020-10-24 06:38:39
【问题描述】:

所以我的游戏中的用户可以拥有像 ch-255-110.hr-165-1394.hd-180-1380.lg-280-110 这样的图形代码,我试图只获取该图形代码的某些部分,但我得到了一个 ArrayIndexOutOfBoundsException

异常信息:

java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0

这是最高级别的代码行:

hairPart = look.split("hr")[1].split(".")[0];

整个方法:

public static String splitFigure(String look) {
    String hairPart = "";
    String headPart = "";
    String headAccPart = "";
    String hatPart = "";
    String glassesPart = "";
    String beardPart = "";
    String chestPart = "";
    String jacketPart = "";
    String necklacePart = "";
    String pantsPart = "";
    String beltPart = "";
    String shoesPart = "";

    if (look.toLowerCase().contains("hr"))
    {
        hairPart = look.split("hr")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("hd"))
    {
        headPart = look.split("hd")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("he"))
    {
        headAccPart = look.split("he")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("ha"))
    {
        hatPart = look.split("ha")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("ea"))
    {
        glassesPart = look.split("ea")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("fa"))
    {
        beardPart = look.split("fa")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("ch"))
    {
        chestPart = look.split("ch")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("cc"))
    {
        jacketPart = look.split("cc")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("ca"))
    {
        necklacePart = look.split("ca")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("lg"))
    {
        pantsPart = look.split("lg")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("wa"))
    {
        beltPart = look.split("wa")[1].split(".")[0];
    }

    if (look.toLowerCase().contains("sh"))
    {
        shoesPart = look.split("sh")[1].split(".")[0];
    }

    return "ha" + hatPart + "." + "he" + headAccPart + "." + "hr" + hairPart + "." + "hd" + headPart + "." + "ea" + glassesPart + "." + "fa" + beardPart + "." + "ch" + chestPart + "." + "cc" + jacketPart + "." + "ca" + necklacePart + "." + "lg" + pantsPart + "." + "wa" + beltPart + "." + "sh" + shoesPart + ".";
}

我传入的示例:

ch-255-110.hr-165-1394.hd-180-1380.lg-280-110

【问题讨论】:

  • 不是答案,但如果你想在点上分割,那么你可能想要split("\\."),因为点是一个正则表达式元字符。但不确定您的问题是否可重现。
  • 这个方法怎么称呼?
  • 你能edit你的问题并发布你想要方法splitFigure返回的字符串吗?

标签: java


【解决方案1】:

尝试改用这个:

look.split("hr")[1].split("\\.")[0]

检查过这个

String a = "ch-255-110.hr-165-1394.hd-180-1380.lg-280-110";
System.out.println(a.split("hr")[1].split("\\.")[0]);

不知道为什么会这样,但我曾经遇到过类似的问题。

【讨论】:

    【解决方案2】:
    public static void main(String[] args) {
    
        String look = "ch-255-110.hr-165-1394.hd-180-1380.lg-280-110";
        
        splitFigure(look);
        
        System.out.println(look);
    }
    
    
    public static String splitFigure(String look) {
        String hairPart = "";
        String headPart = "";
        String headAccPart = "";
        String hatPart = "";
        String glassesPart = "";
        String beardPart = "";
        String chestPart = "";
        String jacketPart = "";
        String necklacePart = "";
        String pantsPart = "";
        String beltPart = "";
        String shoesPart = "";
    
        if (look.toLowerCase().contains("hr"))
        {
            hairPart = look.split("hr")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("hd"))
        {
            headPart = look.split("hd")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("he"))
        {
            headAccPart = look.split("he")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("ha"))
        {
            hatPart = look.split("ha")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("ea"))
        {
            glassesPart = look.split("ea")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("fa"))
        {
            beardPart = look.split("fa")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("ch"))
        {
            chestPart = look.split("ch")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("cc"))
        {
            jacketPart = look.split("cc")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("ca"))
        {
            necklacePart = look.split("ca")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("lg"))
        {
            pantsPart = look.split("lg")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("wa"))
        {
            beltPart = look.split("wa")[1].split("\\.")[0];
        }
    
        if (look.toLowerCase().contains("sh"))
        {
            shoesPart = look.split("sh")[1].split("\\.")[0];
        }
    
        return "ha" + hatPart + "." + "he" + headAccPart + "." + "hr" + hairPart + "." + 
        "hd" + headPart + "." + "ea" + glassesPart + "." + "fa" + beardPart + "." + "ch" + 
        chestPart + "." + "cc" + jacketPart + "." + "ca" + necklacePart + "." + "lg" + 
        pantsPart + "." + "wa" + beltPart + "." + "sh" + shoesPart + ".";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2016-12-16
      • 2022-10-15
      • 2012-04-07
      • 2019-12-05
      • 2022-12-18
      相关资源
      最近更新 更多