2013-12-06 4 views
-4

Нет проблем с ответом, который он дает, но с исключением.
Может ли кто-нибудь помочь мне понять, почему?Исключение во время работы условие?

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)"

+1

Что Exception и где? Пожалуйста, будьте более конкретными. – Burkhard

+0

Пожалуйста, отформатируйте свой код и сообщите нам, какое исключение произошло, включая трассировку стека. – LionC

+0

Кроме того, код не компилируется. Переменная 'c' не объявлена ​​нигде. – bezmax

ответ

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 

    } 
1

b = новый 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, не определенная.

0

вот правильный код: ... спасибо всем ..

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]);  
    } 
} 
} 
Смежные вопросы