Pig Latin Sentence Converter

时间:2017-07-03 04:20:13

标签: java eclipse

我正在尝试将你的句子翻译成猪拉丁语的程序。这是我到目前为止的代码:

public class PigLatin {
    public static void main(String[] args) {
        //Enter text in the quotes of System.ot.println(covertToLatin(" "));
        System.out.println(covertToLatin("Type your sentence here."));
    }

    private static String covertToLatin(String string) {
        String end = "";
        String delims = "\\s+";
        String[] words = string.split(delims);
        for (int i = 0; i < words.length; i++) {
            if(isVowel(words[i].toLowerCase().charAt(0))) {
                end += words[i] + "ay";
            } else {
                end += words[i].substring(1) + words[i].substring(0, 1) + "ay";
            }
        }
        return end;
    }

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

}

它翻译&#34;在这里输入您的句子。&#34; to&#34; ypeTayouryayentencesayere.hay&#34;我很难找到翻译整句话的方法。能帮我把整句话翻译成猪拉丁语吗?此外,如果您能找到一种方法使句子转换为全部大写,这将有所帮助。

2 个答案:

答案 0 :(得分:1)

对于大写,请使用String.toUpperCase()函数

答案 1 :(得分:0)

首先翻译一个单词,然后翻译一个完整的句子。例如,STACK应打印出ACKSTAY。你的程序打印出TACKSAY。 为什么是这样?让我们来看看你的逻辑:

            for (int i = 0; i < words.length; i++) {
                        if(isVowel(words[i].toLowerCase().charAt(0))) {
                            end += words[i] + "ay";
                        } else {
   /*substring(1) is always 1 &&
  you add substring(0,1) which is always the interval (0,1) they never change*/

          end += words[i].substring(1) + words[i].substring(0, 1) +ay";
           }
       }
     return end.toUpperCase();
                }

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

首先尝试在纸上编写算法。例如,总是使用单词堆栈。

第一个字母是s(不是元音),让它保存在临时字符串中。 第二个字母是t(不是元音),让它保存在临时字符串中。 a是元音!我们从temp + ay

中的向前+字母打印

最终结果=&#34; ack&#34; +&#34; st&#34; +&#34; ay&#34;

摘要 - &gt; substring(i,endOfString)+ substring(k,i)+&#34; AY

所以你实际上需要两个柜台! i,k用于打印子串(i,EndOfString)和子串(i,k),表示临时数组