运行条件异常?

时间:2013-12-06 09:25:10

标签: java arrays exception

它给出的答案没有问题,但有例外 有人能帮助我理解为什么吗?

public static void main(String[] args) {
    int a = 0,k=0;
    Scanner obj = new Scanner(System.in);
    System.out.println("enter string");
    String s= obj.nextLine();
    int b[]={0};
    b= new int[10];
    char c[]= s.toCharArray();

    for(int i =0; i<s.length();i++){     
        if(c[i]=='a'|| c[i]=='i'|| c[i]=='o'||c[i]=='u'||c[i]=='e'){
            b[k]=i;
            k=k+1;
        }                       
    }
    for(int j=0;j<15;j++){
        if(b[j]!=0) {
            System.out.println("\n"+b[j]);       
        }
    }
}

我收到的例外是ArrayOutofbound exception at" if(b[j]!=0)"

3 个答案:

答案 0 :(得分:1)

b = new int [10]; b数组大小声明为10,但是你循环15个元素(在下面的代码中使用j变量)。

for(int j=0;j<15;j++){
if(b[j]!=0)
System.out.println("\n"+b[j]); 
}

将循环更改为10可以解决您的问题。

for(int j=0;j<10;j++){

}

有许多错误,例如c变量未定义。

答案 1 :(得分:1)

这里是正确的代码:...谢谢大家..

public static void main(String[] args) {
int a = 0,k=0;
Scanner obj = new Scanner(System.in);
System.out.println("enter string");
String s= obj.nextLine();
int b[]={0};
b= new int[10];
char c[]= s.toCharArray();

for(int i =0; i<s.length();i++){     
    if(c[i]=='a'|| c[i]=='i'|| c[i]=='o'||c[i]=='u'||c[i]=='e'){
        b[k]=i;
        k=k+1;
    }                       
}
for(int j=0;j<10;j++){
    if(b[j]!=0) {
        System.out.println("\n"+b[j]);       
    }
}
}

答案 2 :(得分:0)

这里的c[]数组是什么?如果你的代码就是这样会导致编译错误。如果没事的话。 您将在此处获得ArrayIndexOutOfBound例外

   for (int i = 0; i < s.length(); i++) {
    if (c[i] == 'a' || c[i] == 'i' || c[i] == 'o' || c[i] == 'u' || c[i] == 'e'){
            b[k] = i; // b[] size 10
            k = k + 1; // k can have value >9 
        }
    }

如果没有发生,则必须提供例外。

     for (int j = 0; j < 15; j++) {
        if (b[j] != 0)
            System.out.println("\n" + b[j]); // b[] is size 10 

    }