我正在編寫一個程序,它有兩條規則:
1.如果單詞的第一個字符是元音,則將其移動到單詞的末尾。
2.如果該單詞的第一個字符是輔音,則將其移動到該單詞的末尾並追加'ae'。豬拉丁式程序 - 與元音有關的問題
import java.util.Scanner;
public class Program5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.print("Please enter a sentence: ");
String english = scanner.nextLine();
String piggy = piggyEnglish(english);
System.out.print("Translated: " + piggy);
}
private static String piggyEnglish(String s) {
String piggy = "";
int i = 0;
while (i<s.length()) {
while (i<s.length() && !isLetter(s.charAt(i))) {
piggy = piggy + s.charAt(i);
i++;
}
if (i>=s.length()) break;
int begin = i;
while (i<s.length() && isLetter(s.charAt(i))) {
i++;
}
int end = i;
piggy = piggy + piggyWord(s.substring(begin, end));
}
return piggy;
}
private static boolean beginsWithVowel(String word){
String vowels = "aeiou";
char letter = word.charAt(0);
return (vowels.indexOf(letter) != -1);
}
private static boolean isLetter(char c) {
return ((c >='A' && c <='Z') || (c >='a' && c <='z'));
}
private static String piggyWord(String word) {
int split = firstVowel(word);
if(beginsWithVowel(word)) {
return word.substring(split) + word.substring(0, split);
} else {
return word.substring(split) + word.substring(0, split)+"ae";
}
}
private static int firstVowel(String word) {
word = word.toLowerCase();
for (int i=0; i<word.length(); i++)
if (word.charAt(i)=='a' || word.charAt(i)=='e' ||
word.charAt(i)=='i' || word.charAt(i)=='o' ||
word.charAt(i)=='u')
return i;
return 0;
}
}
以下是預期輸出:
Please enter a sentence: today is a beautiful day
Translated: odaytae si a eautifulbae aydae
然而,這就是我得到:
Please enter a sentence: today is a beautiful day
Translated: odaytae is a eautifulbae aydae
基本上,它並沒有轉化與啓動任何話一個元音。我認爲問題源於piggyWord方法,但我不確定。我可以得到任何關於如何解決這個問題的指針嗎?