2013-11-24 10 views
0

Привет, ребята, я должен сделать приложение, которое преобразует UbbiDubbi на английский. Я начну с объяснения UbbiDubbi, это не обычный способ работы UbbiDubbi, вместо этого мы добавляем только ub перед гласным или гласным кластером (кластер не более двух гласных вместе). Я почти застрял на двух частях, чтобы добавить первый гласный, но не любые другие гласные в String/Word. и два он запускает программу снова и снова.Преобразование английского языка в Ubbi Dubbi

public static String translateFromEnglish(String phrase) { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("type in a phrase you would like to convert to Ubbi Dubbi"); 
     phrase = scan.nextLine(); 
     String Emptystring = ""; 
     for (int i = 0; i < phrase.length(); i++) { 
     if (phrase.charAt(i) == 'a' || phrase.charAt(i) == 'e' || phrase.charAt(i) == 'i' || phrase.charAt(i) == 'o' || phrase.charAt(i) == 'u') { 
      Emptystring += "ub"; 
      Emptystring += phrase.charAt(i); 
      // +ub 
      // +a 
      if (phrase.charAt(i+1) == 'a'){ 
       Emptystring += phrase.charAt(i+1); 
       // +a 
       // i +1 
       } else { 
        if (phrase.charAt(i+1) == 'e') { 
         Emptystring += phrase.charAt(i+1); 
        } 
       } 
         if (phrase.charAt(i+1) == 'i'){ 
          Emptystring += phrase.charAt(i+1); 
        }else { 
         if (phrase.charAt(i+1) == 'o'){ 
          Emptystring += phrase.charAt(i+1); 
          } 
        } 
         if (phrase.charAt(i+1) == 'u') { 
          Emptystring += phrase.charAt(i+1); 
          } 


     } 
         else { 
          Emptystring += phrase.charAt(i); 

         } 

     // here i am check to see if the String contains any vowels or vowel 
     // clusters 

     // here i printed out the new word 



     } 
     System.out.println(Emptystring);  


     return phrase; 
    } 

Console введите фразу вы хотели бы конвертировать в Ubbi Dubbi Hello ваш новый разговорник Ад ошибка

+0

не хватает времени, чтобы помочь сегодня - вы пробовали использовать отладчик? –

+1

Пожалуйста, ** _ ПОЖАЛУЙСТА, _ ** не используйте '+ =' для строк, вместо этого используйте 'StringBuilder'. – Darkhogg

ответ

0

Вашего код трудно следовать из-за все тех, если/другие чеки , Но когда вы пишете что-то вроде этого if (phrase.charAt(i+1) ==..., вы проверяете только следующую букву и не все «кластеры гласных» (что может привести к ненужным «ub» s). также когда i будет последней итерацией i+1 не будет индексом в строке.

import java.util.Scanner; 

public class Test { 

    static boolean isVowel(char v) { 
     if (v == 'a' || v == 'e' || v == 'i' || v == 'o' || v == 'u') { 
      return true; 
     } 
     return false; 
    } 
    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 
     System.out.println("type in a phrase you would like to convert to Ubbi Dubbi"); 

     String phrase = scan.nextLine(); 
     StringBuilder result = new StringBuilder(); 
     boolean prevVowel = false; //is our vowel part of a cluster? 

     for (int i = 0; i < phrase.length(); i++) { 
     if (isVowel(phrase.charAt(i))) { 
      if(prevVowel==false) 
       result.append("ub"); 

      prevVowel=true; 
     } 
     else 
      prevVowel=false; 
     result.append(phrase.charAt(i)); //should be added anyway 

     } 
     System.out.println(result);  

    } 
} 
+0

Используйте StringBuilder. – bluewhile

+0

сделано. вы думаете, что оставить конструктор таким образом? – flyman

+0

Выглядит хорошо для меня. – bluewhile

Смежные вопросы