Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java if语句中的字符串索引越界异常_Java_Arraylist_Substring_Indexoutofboundsexception - Fatal编程技术网

Java 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.

Line是大小为65008的数组列表,我正在尝试测试文件的两行上是否显示一个名称,第一行显示名字,第二行显示姓氏。但是,索引越界异常发生在第一个if语句。当我试图比较子字符串时,我无法意识到是否我在这里做了一些错误的事情导致了这个问题。有人能提出解决这个问题的方法吗?这些if语句相当长,但稍后我将尝试调整它们

尝试使用以下代码:

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++;
    }