无法将普通句子转换为猪拉丁语

时间:2017-11-29 19:26:00

标签: java

我正在尝试将句子转换为猪拉丁语,但似乎无法获得正确的输出。例如输入     the rain in spain stays mainly in the plain使用我当前的代码生成ethay ethay ethay的输出,而预期的输出为ethay ainray inay ainspay aysstay ainlymay inay ethay ainplay

对于那些不熟悉的人来说,猪拉丁的基本规则是:

如果单词以辅音开头,请将起始辅音向上,直到第一个元音,然后将它们移到单词的末尾。然后在最后添加一个。 (所以板球会成为icketcray)

如果单词以元音开头,只需在结尾添加一个。 (苹果会变成苹果)

如果y是单词中的第一个字母,则将其视为辅音,否则将其用作元音。 (年轻人将成为oungyay,系统将成为ystemsay) 我的代码如下:

import java.util.Scanner;
public class PigLatin{
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String line = scan.next();
    String piglatin = translateSentence(line);
    System.out.println(piglatin);
}
public static String translateSentence(String line){
    for (int i =0; i < line.length(); i++ ) {
        char c = line.charAt(i);
        //for loop to analyze each word
        if (Character.isAlphabetic(c)) {

        //if (i <='a' || i<='A' || i>='z' || i>='Z'){
            String piglatin = translateword(line);                  
    return piglatin;    
        }
}
    return line; 
}


public static String translateword(String line) {
Scanner scan = new Scanner(System.in);

    int position = firstVowel(line);    
     String words = "";
     String output = "";
   for(int i = 0; i<line.length();i++){
      words = "";
        if (firstVowel(line) == 0) {
            words = line + "-way";

        } else if (firstVowel(line) == -1) {
            words = line + "";

         } else {        
            String first = line.substring(position);
            String second =  line.substring(0,position) + "ay";
            words = first + second;

        }       
   output = output + " " + words;
   //words = "";
   }
     return output;
}

public static int firstVowel(String line) {

    for (int i = 0; i < line.length(); i++) {

    if (line.charAt(i) == 'a' || line.charAt(i) == 'e'
        || line.charAt(i) == 'i' || line.charAt(i) == 'o'
        || line.charAt(i) == 'u') {

        return i;
    }
    }
    return -1;
}
}  

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

首先编写一个单独的函数来获取行

中的单词列表
public String[] getWords(String line) {
    String list[]=new String[100];
    int j=0;
    int end;
    end=line.indexOf(' ');

    while (end!=-1) {
        list[j]=line.substring(0, end);

        line=line.substring(end+1,line.length());
        j++;

        end=line.indexOf(' ');

    }
    list[j]=line.substring(0,line.length());

    return list;
}

然后修改您的翻译行以多次调用翻译单词,每次都传递一个单词。 假设您的translateWord()返回一个正确翻译的单词。 translateLine以下列方式进行更改:

if (Character.isAlphabetic(c)) {
    String wordList[]=getWords(line);
    String piglatin="";
    int i=0;
    while(!line[i].equals("")) {
        piglatin = piglatin+translateword(word[i]);
        i++;
    }                
    return piglatin;
}