转换为Java中的Pig Latin

时间:2015-12-14 05:40:13

标签: java string boolean

我遇到了这个代码的问题。我的问题只是将“友好”翻译成“iendlyfray”。但是,当我尝试执行此代码时,它只会转换为“riendlyfay”。我更改了代码以便解决这个问题,但是在其他测试中它会导致更多的错误。如何在单词的前几个字符中使用多个辅音更改单词而不会在其他测试中出错?谢谢!

public static void main(String[] args) 
{
    boolean allCorrect = true;
    allCorrect = true;
    allCorrect &= testPigLatin("hello", "ellohay");
    allCorrect &= testPigLatin("ear", "earway");
    allCorrect &= testPigLatin("ugly", "uglyway");
    allCorrect &= testPigLatin("friendly", "riendlyfay");
    allCorrect &= testPigLatin("super", "upersay");
    allCorrect &= testPigLatin("young", "youngway");
    allCorrect &= testPigLatin("wonderful", "onderfulway");
    allCorrect &= testPigLatin("apple", "appleway");
    result(allCorrect, "translateToPigLatin"); } }

public static String translateToPigLatin(String word)
{
    String result = "";
    if(word.startsWith("a") || word.startsWith("e") || word.startsWith("i") || word.startsWith("o") || word.startsWith("u") || word.startsWith("y") ) 
          return (word + "way");
 else { 
      char A = word.charAt(0);
       word = word.substring(1, word.length());
      return (word + A + "ay");
}
}
public static boolean testPigLatin(String strA, String answer)
{
    String result = translateToPigLatin(strA);

    if (result.equals(answer)) {
        System.out.println("CORRECT! \"" + strA + "\" is \"" + answer + "\"      in pigLatin.");
        return true;
    } else {
        System.out.println("Keep Trying! \"" + strA + "\" is \"" + answer + "\" in pigLatin but your method returned \"" + result + "\".");
        return false;
    }
}

1 个答案:

答案 0 :(得分:1)

我认为如果单词不是以元音开头,你需要找出元音第一次出现的位置。因此,对所有元音使用word.indexOf(“a”)等。然后找出哪个指数最低。在第一个元音添加到结尾之前取所有字母并添加一个。

这段代码会出现在else语句中,它看起来像这样(我不知道y在猪拉丁语中是如何工作所以我不打算包括它们)

int a = word.indexOf("a");
int e = word.indexOf("e");
int i = word.indexOf("i");
int o = word.indexOf("o");
int u = word.indexOf("u");

String first = "";
//must make sure they aren't equal to -1
if(a!=-1 && a<e && a<i && a<o && a<u)
   first="a";
else if(e!=-1 && e<a && e<i && e<o && e<u)
   first="e"
else if(i!=-1 && i<a && i<e && i<o && i<u)
   first="i"
else if(o!=-1 && o<a && o<e && o<i && o<u)
   first="o"
else if(u!=-1 && u<a && u<e && u<i && u<o)
   first="u"

char A = word.substring(0,word.indexOf(first));
word = word.substring(word.indexOf(first), word.length());
return (word + A + "ay");