除了大写部分外,我的程序正在运行: 以下是将英语单词englishWord翻译成猪拉丁语单词pigLatinWord的方法: 一个。如果英语中没有元音,那么pigLatinWord就是英语+" ay"。 (有十个元音:' a','' i'' o' o' u&#39 ;和他们的大写对应物。) 湾另外,如果englishWord以元音开头,那么pigLatinWord就是英语和#34; yay"。 C。否则(如果englishWord中有一个元音并且没有以元音开头),则pigLatinWord结束+开始+" ay&#34 ;,其中end和start定义如下: 1.让我们开始全部是英语,直到(但不包括)它的第一个元音。 让我们从第一个元音开始就结束英语。 但是,如果英语是资本化的,那么资本化就会结束,并且“无资本化”#34;启动。
你如何做资本化部分? 到目前为止,我得到了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);
}
}
答案 0 :(得分:1)
您可以通过将字符串分解为子字符串然后将它们大写来大写字母:
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();
}
执行操作后调用此方法