到目前为止,我一直在尝试编写一个程序,该程序应该将英语句子翻译为类似于Pig Latin的语言。这就是问题的模样。


您将为DrA的TwinSpeak写英文翻译。双胞胎通常是其他人无法理解的语言。这是一个密码有点像“拉丁猪”,但是所有双胞胎都有自己的规则。
以元音开头的单词在末尾添加了“ -eh”。
鸡蛋变成鸡蛋,打开变成开放,最终变成极限。
以单个辅音开头的单词,会将辅音移到单词的末尾,然后添加“ eh”单词,变成ord-weh,主要变成ainly-meh
以2或3个辅音开头的单词根本不会改变。
西班牙仍然是西班牙。三个仍然是三个。


这是我应该翻译的:


  西班牙的雨主要留在平原上,而法国的蚂蚁主要留在植物上


这应该变成这样:


  Ain-reh in-eh西班牙留在ainly-meh在eh上平原ut-beh蚂蚁-eh in-eh法国在Ainly-eh-eh在植物上


我已经编写了代码,但是,它似乎一次只能翻译一个单词,而不是整个句子。如果我翻译整个句子,则会收到错误消息。

import java.util.Scanner;

public class PartD {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Please enter a phrase to convert: ");

        String phrase = keyboard.nextLine();

        String[] words = phrase.split(" ");

        for(int i = 0; i < words.length; i++ ) {
            char firstLetter = (words[i].charAt(0));
            if (firstLetter == 'a' || firstLetter == 'e' || firstLetter == 'i' || firstLetter == 'o' || firstLetter == 'u') {
                String vowel = words[i] +"-eh";
                System.out.print(vowel);
            } else {
                String start = words[i].substring(0,1);
                String end = words[i].substring(1,phrase.length());
                System.out.print(end + "-" + start + "eh" );
            }
        }
        System.out.println( );
    }
}

最佳答案

这行:

    String end = words[i].substring(1,phrase.length());


使用整个初始字符串的长度。

您需要解析的单词的长度,例如

    String end = words[i].substring(1,words[i].length());


另外,在您创建的每个单词上添加一个空格以分解结果,例如

    String vowel = words[i] +"-eh "; // note the added space

10-08 20:18