Java if语句中的字符串索引越界异常
Line是大小为65008的数组列表,我正在尝试测试文件的两行上是否显示一个名称,第一行显示名字,第二行显示姓氏。但是,索引越界异常发生在第一个if语句。当我试图比较子字符串时,我无法意识到是否我在这里做了一些错误的事情导致了这个问题。有人能提出解决这个问题的方法吗?这些if语句相当长,但稍后我将尝试调整它们 尝试使用以下代码:Java if语句中的字符串索引越界异常,java,arraylist,substring,indexoutofboundsexception,Java,Arraylist,Substring,Indexoutofboundsexception,Line是大小为65008的数组列表,我正在尝试测试文件的两行上是否显示一个名称,第一行显示名字,第二行显示姓氏。但是,索引越界异常发生在第一个if语句。当我试图比较子字符串时,我无法意识到是否我在这里做了一些错误的事情导致了这个问题。有人能提出解决这个问题的方法吗?这些if语句相当长,但稍后我将尝试调整它们 尝试使用以下代码: if(line.get(count).substring(line.get(count).indexOf(p1)).equals(p1.substring(0, p1.
if(line.get(count).substring(line.get(count).indexOf(p1)).equals(p1.substring(0, p1.indexOf(" ")))) {
count++;
if(line.get(count).contains(p1.substring(p1.indexOf(" ") + 1, p1.length())))
System.out.println((count-1) + " " + (line.get(count-1).indexOf(p1)) + " " + p1);
}
主要区别在于,在两个if条件都运行之后,它增加了count,并且为可读性在第二个if中添加了大括号。我不确定这是否能解决问题,如果不能,那么您可能需要提供更多信息。您确定
line.get(count)
包含p1
,并且p1
包含”
?提供堆栈跟踪。旁注:在花费数小时调试后,不要调整复杂的代码。确保从一开始就易于阅读和理解。因为那时。。。您可能不需要几个小时的调试,也不需要求助于SO。此外:请退后一秒;重读你的问题。“我知道,我的代码很难读懂;我稍后会解决这个问题;与此同时,亲爱的互联网,请帮我在这段难看的意大利面代码中找到漏洞。”是的,这实际上是我在使用类似行之前做的最后一次测试。get(count)等等,p1被初始化为名字,名字和姓氏之间有空格。
if (line.get(count).substring(line.get(count).indexOf(p1))
.equals(p1.substring(0, p1.indexOf(" ")))) {
if (line.get(count).contains(
p1.substring(p1.indexOf(" ") + 1, p1.length()))) {
System.out.println((count - 1) + " "
+ (line.get(count - 1).indexOf(p1)) + " " + p1);
}
count++;
}