Java 编译程序时,我遇到ArrayIndexOutOfBound异常
我在第14行得到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++)
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]);
}