将单词或句子翻译成猪拉丁语

时间:2018-03-17 01:19:18

标签: java

所以基本上我对这个问题的问题是我不允许使用Stringbuilder,数组或String.split()来创建这个程序。我完全难以做到这一点,因为如果我能用这些方法解决这个问题,我就不会在这里。

至于实际节目: 所需要的是接受识别第一个元音的单词或句子,并将其前面的字符放在元音和其他字符之后,将其分隔为“ - (元音前的字符)”。换句话说,它将字符串翻译成猪拉丁语:

  

最深的阴影

转换为:

  

e-Thay eepest-day ade-shay

这是我到目前为止所记得的,请记住我从if语句获取第12行的String out of bounds错误,因为在某些原因它在检测到单词之间的空格后崩溃了。我也不知道如何采用一种方法让这个程序只处理一个单词和句子。

public static void main(String[] args){
    String word = "", temp = "", secondTemp = "", beforeVowel = "", translation = "";
    int start = 0, stop = 0, counter = 0;
    char a = 'a', e = 'e', charI = 'i', o = 'o', u = 'u';
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a word or sentence to translate it into Pig Latin");
    word = input.next();
    while(input.hasNext()) {
        if(!(word.charAt(stop) == ' ')) {
            stop++;
        }
        else {
            temp = word.substring(start, stop);
            start = stop;
            for(int i = 0; i<temp.length(); i++) {
                if(temp.charAt(i) == a || temp.charAt(i) == e || temp.charAt(i) == charI || temp.charAt(i) == o || temp.charAt(i) == u) {
                    secondTemp = temp.substring(0, i);
                    translation = temp.substring(i-1) + "-" + secondTemp + "ay";
                }
            }
        }

        System.out.println(translation);
    }
}

我做了一些改进以改进我的代码,并且已经达到了我可以翻译字符串的第一个单词的程度,但我的代码将完全忽略字符串中的其余单词。

    public static void main(String[] args){
  String word = "", temp = "", secondTemp = "", beforeVowel = "", translation = "";
    int start = 0, stop = 0, counter = 0;
    char a = 'a', e = 'e', charI = 'i', o = 'o', u = 'u';
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a word or sentence to translate it into Pig Latin");
    word = input.next();
    while(input.hasNext()) {
            for(int i = 0; i<word.length(); i++) {
                if(word.charAt(i) == a || word.charAt(i) == e || word.charAt(i) == charI || word.charAt(i) == o || word.charAt(i) == u) {
                    secondTemp = word.substring(0, i);
                    translation += word.substring(i) + "-" + secondTemp + "ay";
                }
            }
            break;
        }

        System.out.println(translation);
        }
    }

1 个答案:

答案 0 :(得分:1)

input.next()已经为您提供了下一个单词,所以我认为您不必四处寻找空白。这看起来像是家庭作业,所以也许最好不要给你完整的答案,但你的做法非常接近。

因为input.next()提供了下一个单词,所以我完全摆脱了这里的分支。单词没有空格。

    if(!(word.charAt(stop) == ' ')) {
        stop++;
    }
    else {
        temp = word.substring(start, stop);
        start = stop;

并且,当hasNext()为最后一个元素返回false时,最后一个元素将不会被处理,因此我将循环更改为:

for (word = input.next(); input != null; word = input.next()) {

(当没有输入时input.next()返回null

此行有一个错误:

translation = temp.substring(i-1) + "-" + secondTemp + "ay";

然后你需要break离开这个循环,否则它会转到下一个元音并丢弃我们找到的翻译。