java - Java:索引 0 超出长度 0 的范围
问题描述
因此,我的游戏中的用户可以拥有类似的图形代码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
解决方案
尝试改用这个:
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]);
不知道为什么会这样,但我曾经遇到过类似的问题。
推荐阅读
- bash - 如何读取 JIRA REST API 的响应
- telerik - 如何在客户端更新/设置 Telerik RadMaskedTextBox 的掩码(使用 javascript / jquery)
- flask-socketio - FlaskSocketIO 检索所有已连接客户端的列表
- r - 尝试用相同的键替换 aa 列的 na 值,但其中一行有值
- c++ - MPI 和移动语义
- python - 使用 Colab 笔记本在我们的谷歌驱动器中获取文件的可共享链接
- python - Argparse:具有可变参数的选项的可选参数
- python - Python中路径中的空格
- r - 计算矩阵被积函数 R 中的多维积分
- php - 如何仅使用 if/elseif 语句检查(虚构的)商店在特定时间之间是打开还是关闭?