首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PigLatin程序help...Capitalize?

PigLatin程序help...Capitalize?
EN

Stack Overflow用户
提问于 2014-11-30 02:06:48
回答 1查看 747关注 0票数 0

我有程序工作,除了大写部分:以下是如何将英文单词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

以下是目前为止的基本程序:

代码语言:javascript
复制
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);
}

}
EN

回答 1

Stack Overflow用户

发布于 2014-11-30 02:12:01

您可以通过将字符串拆分成子字符串,然后将它们大写,来实现字母的大写:

代码语言:javascript
复制
String word = word.substring(0, 1).toUpperCase() + word.substring(1);

所以只需使用String的toUpperCase()和toLowerCase()方法...

还有一个巧妙的技巧,您可以使用基于ASCII表的单个字符。只需将它们与32进行xor运算即可得到另一种情况。

您要查找的内容如下所示:

代码语言:javascript
复制
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();
}

只需在执行操作后调用此方法

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27205325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档