Java 编译程序时,我遇到ArrayIndexOutOfBound异常

Java 编译程序时,我遇到ArrayIndexOutOfBound异常,java,Java,我在第14行得到ArrayIndexOutOfBound异常 package str.files; public class Duplicate { public static void main(String[] args) { int count=0; String s="this is a java is program "; String[] dup= s.split(" "); for(int i=1;i<=dup.length;i++)

我在第14行得到ArrayIndexOutOfBound异常

package str.files;

public class Duplicate {

public static void main(String[] args)
{
    int count=0;
    String s="this is a java  is program ";
    String[] dup= s.split(" ");

    for(int i=1;i<=dup.length;i++)
    {
        //System.out.println(dup[i]);
        if(dup[i].equalsIgnoreCase(dup[i+1]))
        {

            count++;
        }           
        System.out.println("The duplicate character is : :"+dup[i]);    
    }

    System.out.println("no. of occurances of the program is : "+count);

}
只能循环到dup.length-1

因为在循环内使用i+1,所以可以使用小于dup.length-1的值i,否则将超出数组的边界

也从i=0开始,它是数组的开始

for(int i=0; i<dup.length - 1; i++) {
    //System.out.println(dup[i]);
    if(dup[i].equalsIgnoreCase(dup[i+1])) {
        count++;
    }           
    System.out.println("The duplicate character is : :"+dup[i]);    
}

Java数组的索引范围为0到length-1,而不是1到length。注意:编译时不会发生此异常:它发生在运行代码时。也可以使用s.split\\s+;拆分单个或多个空间。此外,您只需检查副本是否为下一个副本elementi@Scary袋熊你能建议我如何检查副本吗?元素[0]呢?我不知道。他的代码不启动元素[0]。
for(int i=1;i<dup.length - 1;i++)
{
    //System.out.println(dup[i]);
    if(dup[i].equalsIgnoreCase(dup[i+1]))
    {

        count++;
    }           
    System.out.println("The duplicate character is : :"+dup[i]);    
}
for(int i=0; i<dup.length - 1; i++) {
    //System.out.println(dup[i]);
    if(dup[i].equalsIgnoreCase(dup[i+1])) {
        count++;
    }           
    System.out.println("The duplicate character is : :"+dup[i]);    
}