2013-11-22 3 views
0

поэтому мой код работает для некоторых слов, но не для других, он сбрасывается. Индекс строки выходит за пределы диапазона: -1 im Предположим, чтобы распечатать ub перед каждым гласным и гласным кластером ex dubious был бы dubububious или cat loveo будет lubovudeoОшибки строк в конвертере

String sentance, set;

 sentance = "toster iooppp"; 
     set= translate(sentance); 
     System.out.println(set); 
} 
public static String translate (String sentence){ 

    String set = " "; 
    sentence= sentence.toLowerCase(); 
    scan = new Scanner (sentence); 

    while (scan.hasNext()) { 

     set+= toUbbi (scan.next()); 
     set += " "; 
    } 
    return set; 
    } 

private static String toUbbi(String word) { 
    String str= word; 
    String new_str=""; 
    for (int i = 0; i < str.length(); i++) { 
      char c = str.charAt(i); 
      if (isVowel(c) && isVowel(str.charAt(i -1))) 
      { // If is a vowel 
       new_str += "ub" ; 
      } 
      new_str += c; 
     } 
    return new_str; 
    } 


    private static boolean isVowel(char c) 
    { 
     if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){ 
      return true;} 

     return false;  
+0

Этот код не завершено - с обеих сторон отсутствуют линии. – isnot2bad

+0

Не любил бы кошку любовью? –

+0

Я подозреваю, что ваша логика неверна, и вы, вероятно, обнаружите, что это дает вам неправильный ответ, когда вы не можете его терпеть. Я бы прошел через это вручную и посмотрел, как «toUbbi» будет работать. Также убедитесь, что логика делает то, что вы хотите на границах, т. Е. Когда 'i' равно 0 и когда это' str.length() - 1'. – ajb

ответ

0

в первой итерации дает ошибку ..

 if (isVowel(c) && isVowel(str.charAt(i -1))) 
     { // If is a vowel 
      new_str += "ub" ; 
     } 

так измениться, как это ..

 if (isVowel(c)) 
     { // If is a vowel 
      new_str += "ub" ; 
     } 

или изменить цикл ..

for (int i = 1; i < str.length(); i++) { 
     // yur remain code... 
    } 
Смежные вопросы