gpt4 book ai didi

java - 为什么我会得到 ArrayIndexOutOfBoundsException?

转载 作者:行者123 更新时间:2023-12-04 05:59:40 37 4
gpt4 key购买 nike

我读取一个文件并将其添加到列表中,然后读取列表并拆分字符串并进行比较并对其进行处理。
我得到这个异常(exception):
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
我应该在哪里更正我的代码?

for (Productname m : listIP) {
if (m.getIdentifier() == null || m.getProductname() == null) {
addToNonSimilarList( m.getProductname());
} else {
String id = m.getIdentifier().replaceAll("(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])", " ").toUpperCase();
String product = m.getProductname().replaceAll("(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])", " ").toUpperCase();
id = id.replaceAll("\\s+", " ");
product = product.replaceAll("\\s+", " ");
if (!id.equalsIgnoreCase(product)) {
if (id.contains(" X ") && product.contains(" X ")) {
String[] ide = id.split(" (?=X\\s*\\d+)");
String[] prod = product.split(" (?=X\\s*\\d+)");
System.out.println(m.getMnemonic());
if (ide.length > 0 && prod.length > 0 && ide[1].trim().equalsIgnoreCase(prod[1].trim())) {
String[] i = ide[0].split(" (?=\\d+)");
String[] p = prod[0].split(" (?=\\d+)");
if (i[0].trim().equalsIgnoreCase(p[0].trim())) {
//do nothing
} else {
addToNonSimilarList( m.getProductname());
}
} else {
addToNonSimilarList( m.getProductname());
}
} else {
addToNonSimilarList( m.getProductname());

}
}
}

}

最佳答案

好吧,这种情况看起来很狡猾:

if (ide.length > 0 && prod.length > 0 
&& ide[1].trim().equalsIgnoreCase(prod[1].trim())) {

您正在测试每个元素中是否至少有一个元素,但您正在每个元素中使用第二个元素。

很难说你想要达到什么目的,但我怀疑你要么想改变 length条件或数组索引。我还会将此方法拆分为更短的方法,并可能创建命名良好的静态变量并引用 Pattern对象,为清楚起见...

编辑:如果您真的想使用每个数组中的第二个元素,我建议:
if (ide.length > 1 && prod.length > 1 
&& ide[1].trim().equalsIgnoreCase(prod[1].trim())) {

关于java - 为什么我会得到 ArrayIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082588/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com