我正在尝试将你的句子翻译成猪拉丁语的程序。这是我到目前为止的代码:
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;我很难找到翻译整句话的方法。能帮我把整句话翻译成猪拉丁语吗?此外,如果您能找到一种方法使句子转换为全部大写,这将有所帮助。
答案 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),表示临时数组