有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

爪哇猪拉丁语(ranslatetay)代替(anslatetray)

如何使indexOfVowel方法为translate等字符串返回1?我需要它来找出元音前的所有辅音,然后移到末尾。如果我把“not元音”改为2,“translate”这个词应该是“anslatetray”,但它返回ranslatetay。它只检查第一个字母,不检查单词的其余部分

    private String translateWord(String word) {
    String translated = "";
    int vowel = 0;
    int notVowel = 1;

    if (vowel == indexOfVowel(word)) {
        return (word + "way ");
    }
    if (notVowel == indexOfVowel(word)) {
        return (word.substring(1) + word.substring(vowel, 1) + "ay ");
    }
    return translated;
}
private static int indexOfVowel(String word) {
    int index = 0;
    for (int i = 0; i < word.length(); i++) {
        if (isVowel(word.charAt(i))) {
            return i;
        }
        } 
        return word.length();
      
        }
private static boolean isVowel(char ch) {
    switch (ch) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            return true;
        default:
            return false;
    }
}

}


共 (1) 个答案

  1. # 1 楼答案

    我认为在任何情况下都不希望indexOfVowel返回1。你想让它做它听起来会做的事。。。返回传递给它的单词中第一个元音的索引。如果第一个元音恰好位于单词的开头,它将返回0,否则它将返回一个非0值,指示第一个元音的位置。你需要那个位置在其他地方做正确的事情。所以indexOfVowel是正确的

    你的问题是你对substring方法的使用。。。了解如何使用它来选择目标词的正确部分

    下面是代码的一个修改版本,它做了正确的事情,带有注释来解释substring的两种用法:

    public class Test {
    
        private static String translateWord(String word) {
            int i = indexOfVowel(word);
            if (i == 0) { // if word starts with vowel
                return (word + "way ");
            }
            else { // word doesn't start with a vowel
                // 'i' is the position of the first vowel
                // word.substring(i) = from position of first vowel to end of word
                // word.substring(0, i) = from start of word to char before first vowel
                return (word.substring(i) + word.substring(0, i) + "ay ");
            }
        }
    
        private static int indexOfVowel(String word) {
            for (int i = 0; i < word.length(); i++) {
                if (isVowel(word.charAt(i))) {
                    return i;
                }
            }
            return word.length();
    
        }
        private static boolean isVowel(char ch) {
            switch (ch) {
                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':
                    return true;
                default:
                    return false;
            }
        }
    
        public static void main(String[] args) {
            System.out.println(translateWord("action"));
            System.out.println(translateWord("translate"));
            System.out.println(translateWord("parachute"));
            System.out.println(translateWord("scrap"));
        }
    }
    

    结果:

    actionway 
    anslatetray 
    arachutepay 
    apscray