【问题标题】:Translating phrases into pig latin with string用字符串将短语翻译成猪拉丁语
【发布时间】:2014-06-08 21:13:41
【问题描述】:

我目前正在编写一个猪拉丁语翻译器,它将字符串分解成单词,然后翻译它们。如果一个单词的前四个字母中的任何一个是辅音,它会将这些字母移到后面并添加一个“ay”。如果单词以元音开头,则在单词末尾添加“way”。

显然,我的猪拉丁语翻译器代码不会输出翻译后的字符串,而是将原始英文单词分解成几个不同的部分。我有点不知道下一步该怎么做,如果有人可以帮助我诊断问题,那就太好了。谢谢!

public class WL10Driver {
    public String convertToPig(String english){
        String pigLatin = "";
        int pigLatinWord = 0;
        String vowel = "[aeiouAEIOU]";

        for(int i = 0; i<english.length(); i++){
            char let = english.charAt(i);
            int ind = vowel.indexOf(let);

            if(ind > -1){
                if(i == 0){
                    return english+"yay";
                }
                else{
                    String start = english.substring(0,i);
                    String end = english.substring(i);
                    return end+start+"ay";
                }
            }
        }
        return english+"ay";
    }
}

看来问题出在调用方法上。我让它显示JOptionPane.showMessageDialog(null,english);。 我应该让 JOptionPane 显示什么?

【问题讨论】:

  • 谷歌翻译尝试并未能理解猪拉丁语,为什么还要麻烦?
  • 奇怪,代码看起来基本没有错。稍后我将运行一些测试,但是您如何调用convertToPig,显示有关此的代码。您不只检查前 4 个字母;您正在检查整个单词。
  • 似乎有一个错误出现在 (if ind > -1) 的“else”块中,因为您将 i 之前的所有字符都放在了单词的末尾。

标签: java string return translate


【解决方案1】:
boolean isVowel(char ch) {
    return "aeiouAEIOU".contains("" + ch);
}

public String convertToPig(String english) {
    if (english == null) return null;
    for (int i = 0; i < Math.min(english.length(), 4); i++) {
        char ch = english.charAt(i);
        if (i == 0 && isVowel(ch)) return english + "way";
        if (!isVowel(ch)) {
            String tmp = "";
            if (i < english.length() - 1) tmp = english.substring(i + 1);
            return english.substring(0, i) + tmp + ch + "ay";
        }
    }
    return english;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多