它给出的答案没有问题,但有例外 有人能帮助我理解为什么吗?
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)"
答案 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
}