我有程序工作,除了大写部分:以下是如何将英文单词englishWord翻译成猪拉丁单词pigLatinWord: a.如果在englishWord中没有元音,那么pigLatinWord就是englishWord + "ay“。(有十个元音:'a‘、'e’、'i‘、'o’和'u',以及它们对应的大写字母。)b.否则,如果englishWord以元音开头,那么pigLatinWord就是englishWord + "yay“。c.否则(如果englishWord中有元音,但不是以元音开头),则pigLatinWord是end + start + "ay",其中end和start的定义如下: 1.设start是直到(但不包括)其第一个元音的所有englishWord。2.让end是从它的第一个元音开始的所有englishWord。3.但是,如果englishWord是大写的,那么大写end和"uncapitalize“start。
大写部分是怎么做的?到目前为止,我得到了Hasta= astaHay。它应该是Hasta = Astahay
以下是目前为止的基本程序:
public static boolean isVowel(char c) {
if (c == 'a' && c == 'A') {
return true;
} else if (c == 'e' && c == 'E') {
return true;
} else if (c == 'i' || c == 'I') {
return true;
} else if (c == 'o' || c == 'O') {
return true;
} else if (c == 'u' || c == 'U') {
return true;
} else {
return false;
}
}
public static String convertPigLatinWord(String englishWord) {
int length = englishWord.length();
if (englishWord.charAt(length - 1) == '.' && englishWord.charAt(length - 1) == '!' && englishWord.charAt(length - 1) == '?') {
char ch = englishWord.charAt(0);
String rest = englishWord.substring(1, length - 1);
return (rest + ch + "ay" + englishWord.charAt(length - 1) + "\"" + " ");
} else if (isVowel(englishWord.charAt(0))) {
return (englishWord + "yay" + " ");
} else {
char ch = englishWord.charAt(0);
String rest = englishWord.substring(1);
return (rest + ch + "ay" + " ");
}
}
public String translate() {
String pigLatinPhrase = "";
while (englishPhrase.length() > 1) {
String word = getWord();
pigLatinPhrase += convertPigLatinWord(word) + " ";
}
return pigLatinPhrase;
}
public static void main(String[] args) {
String answer = "";
do {
Scanner keyboard = new Scanner(System.in);
String input;
System.out.print("Please enter an English phrase: ");
input = keyboard.nextLine();
PigLatin3 first = new PigLatin3(input);
System.out.println(first.translate());
System.out.println("Would you like to translate another phrase? (y or n)");
answer = keyboard.nextLine();
} while (!(answer.equals("N")) && !(answer.equals("n")));
System.exit(0);
}
}发布于 2014-11-30 02:12:01
您可以通过将字符串拆分成子字符串,然后将它们大写,来实现字母的大写:
String word = word.substring(0, 1).toUpperCase() + word.substring(1);所以只需使用String的toUpperCase()和toLowerCase()方法...
还有一个巧妙的技巧,您可以使用基于ASCII表的单个字符。只需将它们与32进行xor运算即可得到另一种情况。
您要查找的内容如下所示:
public static String onlyFirstLetterUpperCase(String a){
int i;
for (i = 0; i < a.length(); i++){
if("AEIOUaeiou".indexOf(a.charAt(i)) != -1 )
break;
// indexOf looks for a char in a given string and returns its
// position or -1 if not found. So if this indexOf returns -1 I can be sure,
// that the character is not a vowel
}
return a.substring(0, i + 1).toUpperCase() + a.substring(i + 1).toLowerCase();
}只需在执行操作后调用此方法
https://stackoverflow.com/questions/27205325
复制相似问题