2012-02-28 9 views
1

私はいくつかの方法を書いている問題があります... some1が助けることができれば、私は本当にそれを感謝します。ありがとうございました。Java - 書くobenglobishメソッド

タスク: は - たとえばあなたが母音の前に "OB" を追加しなければならないことを意味します... - "obenglobish" にそれを回す - 単語 を読む:英語になります - > OBenglOBish ... 例外:行の2つの母音& & -eが単語の最後の文字です。

これは、私が書いたものを例外に関係なく、次のとおりです。

import acm.program.*; 

public class ObenGlobishX extends ConsoleProgram { 
    public void run() { 
     println("OBENGLOBISH"); 
     while (true) { 
      String word = readLine("Enter a word: "); 
      if (word.equals("")) break; 
      println(word + " --> " + obenglobish(word)); 
     } 
    } 

    private String obenglobish (String word) { 
     String result = ""; 
     for (int i = 0; i < word.length(); i++) { 
      char c = word.charAt(i); 
      if (isEnglishVowel(c)) result = result + "ob" + c; 
      else result += c; 
     } 
     return result; 
    } 

    private boolean isEnglishVowel(char x) { 
     if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u') return true; 
     return false; 
    } 

} 

それは英語と腐敗(ロボット)のように単語のために動作しますが、単語gooiestのために、それは動作しません - 2つのOOの...必要性を正しい結果を得るための方法を変更する方法を見つけるために...それは意味: gooiest - > gobooiest 驚か - > obamobaze など

THX

+6

この宿題はありますか? –

+0

いいえ...私はJava(初心者)を学んでいます..これは本の演習Javaの芸術と科学 - エリックロバーツ..そして私はそれを理解することはできません... – cyb3r

答えて

3
private String obenglobish (String word) { 
    String result = ""; 
    for (int i = 0; i < word.length(); i++) { 
     char c = word.charAt(i); 
     if (isEnglishVowel(c)) { 
      if (c == 'e' && i == word.length()-1) { 
       result += c; 
      } else { 
       if(i!=0 && isEnglishVowel(word.charAt(i-1))) { 
        result += c; 
       } else { 
        result = result + "ob" + c; 
       }     
      } 
     } else { 
      result += c; 
     } 
    } 
    return result; 
} 
+0

ありがとうございました! – cyb3r