我正在研究一種將拉丁語翻譯成豬拉丁語的翻譯器。這裏是拉丁方法和isVowel方法。明膠翻譯器java
public static void pigLatin(String s) {
char[] array = s.trim().toCharArray();
if(isVowel(s.charAt(0)) && !Character.toString(s.charAt(0)).equalsIgnoreCase("y")){
System.out.println(s+"way");
}else {
int i = 0;
String toReturn = "";
do {
toReturn += array[i];
i++;
}while(!isVowel(s.charAt(i)) && !Character.toString(array[i]).equalsIgnoreCase("y"));
System.out.println(s.substring(i)+toReturn+"ay");
}
}
public static boolean isVowel(char c) {
char[] vowels = new char[] {'a','e','i','o','u','y'};
for(int i = 0;i<vowels.length;i++) {
if(Character.toString(vowels[i]).equalsIgnoreCase(Character.toString(c))) {
return true;
}
}
return false;
}
問題是當我輸入單詞「BIDR」和「安靜」。第一個投擲java.lang.StringIndexOutOfBoundsException: String index out of range: 4
第二個不能正確轉換。安靜的印刷uietqay,當它認爲是靜音時,但這是沒有意義的,因爲,你應該把所有的常數都取到元音,這應該意味着uietquay,那麼爲什麼它是靜音?有人能指點我正確的方向嗎?
注意:這不是家庭作業。
*安靜打印uietqay,當它假設是ietquay,但沒有任何意義,因爲,你應該採取高達元音,這應該意味着uietquay那麼爲什麼ietquay所有的常量?* **嗯?**你問*我們*教你明膠的規則嗎?在請求幫助使程序符合要求之前,牢牢掌握您的要求。我們不是在這裏給你的要求。 – 2011-12-13 17:54:12
我只是向你解釋發生了什麼......我知道需求是什麼。我在我的評論中清楚地顯示了他們,「你應該把所有常數都加到元音之上」。 – 2011-12-13 18:00:20
如果你「應該把所有的常量都歸到元音中」,你爲什麼還會說,「它認爲[原文如此]是ietquay」?這兩種說法是相互排斥的。他們不可能都是真實的。關於該段沒有任何「明確的」。 – 2011-12-13 18:05:37