不知道如何解决此错误,尝试编写一个方法,但始终遇到相同的错误

时间:2018-10-24 20:51:24

标签: java

我正在尝试编写一种方法,该方法将返回字符串“ w”中第一个元音所在位置的整数值。我已经创建了第一个方法来查找在某个位置是否存在元音,但是当我尝试在新方法中使用该方法时,它说“找不到符号-方法isVowel()”。有谁知道这是为什么以及如何解决?我已经被告知必须在新方法中使用isVowel方法。该错误突出显示了在最后一种方法中使用的术语“ isVowel()”。

public class words
    {
        private String w;

        /**
         * Default Constructor for objects of class words
         */
        public words()
        {
            // initialise instance variables
            w="";
        }

        /**
         * Assignment constructor
         */
        public words(String assignment)
        {
            w=assignment;
        }

        /**
         * Copy constructor
         */
        public words(words two)
        {
            w=two.w;
        }

        /**
         * Pre: 0<=i<length( )
         * returns true if the character at location i is a vowel (‘a’, ‘e’, ‘i', ‘o’, ‘u’ only), false if not
         */
        public boolean isVowel(int i)
        {
            if (w.charAt(i)=='a')  
                return true; 
            else if (w.charAt(i)=='e')
                return true;
            else if (w.charAt(i)=='i')
                return true;
            else if (w.charAt(i)=='o')
                return true;
            else if (w.charAt(i)=='u')
                return true;
            else return false;
        }
        /**
         * determines whether the first vowel in the String is at location 0, 1, 2, or 3 (don’t worry about exceptions)
         */
        private int findFirstVowel()
        {
            return w.indexOf(w.isVowel());
        }

2 个答案:

答案 0 :(得分:1)

您需要迭代w的有效索引,然后可以使用isVowel(int)方法进行检查。像

private int findFirstVowel()
{
    for (int i = 0; i < w.length(); i++) {
        if (isVowel(i)) {
            return i;
        }
    }
    return -1;
}

另外,您可以考虑将if-else的链简化为return中的基本isVowel(我注意到您目前仅匹配小写字母,但我们也可以将其大小写-不敏感)。喜欢,

public boolean isVowel(int i) 
{
    char ch = Character.toLowerCase(w.charAt(i));
    return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u';
}

答案 1 :(得分:0)

另一种可能性是:

public boolean isVowel(int i) 
{
    char ch = Character.toLowerCase(w.charAt(i));
    switch(ch) {
        case 'a: case'e': case'i': case 'o': case 'u':
            return true;
    }
    return false;
}

此外,“ y”通常是元音。您的算法会为“ system”,“ syzygy”,“ why”等单词给出错误的元音数量。