PigLatin计划帮助......资本化?

时间:2014-11-29 18:06:48

标签: java

除了大写部分外,我的程序正在运行: 以下是将英语单词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);
}

}

1 个答案:

答案 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();
}

执行操作后调用此方法