java 不兼容的类型boolean无法转换为char [closed]

3npbholx  于 2023-01-07  发布在  Java
关注(0)|答案(2)|浏览(172)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
9个月前关闭。
社区在9个月前审查了是否重新讨论该问题,并将其关闭:
原始关闭原因未解决
Improve this question

public class WordPlay {

    public boolean isVowel(char ch) {
        String vowels = "aeiouAEIOU";
        int i;
        for (i = 0; i < vowels.length(); i = i + 1) {
            char v = vowels.charAt(i);
            if (v == ch) {
                return true;
            } else {
                return false;
            }
        }
    }

    public void testIsVowel() {
        char value = isVowel('a');
        System.out.println(value);
    }
}

我收到一条错误消息,内容如下:第15行的"无法将布尔值转换为字符"(即行:我的最后一个方法是一个测试器方法,看看isVowel字符是否会为我放在那里的任何字符打印true或false。非常新的Java不知道如何继续。

carvr3hs

carvr3hs1#

因为isVowel返回一个boolean,但是您将它赋给了一个char变量。
您的代码可以这样改进:

public class WordPlay {
    private static final String VOWELS = "aeiou";

    public boolean isVowel(char ch) {
        char c = Character.toLowerCase(ch);
        return VOWELS.contains(String.valueOf(c));
    }

    public void testIsVowel() {
        boolean isVowel = isVowel('E');
        System.out.println(isVowel);
    }
}
uurity8g

uurity8g2#

所以你的循环有一些问题,所以我决定给予你一个重构的代码。

public boolean isVowel(char ch) {
    String vowels = "aeiouAEIOU";
    boolean isVowel = false;
    //the int can be declared in the loop. There is no need for i = i + 1
    for (int i = 0; i < vowels.length(); i++) {
        if (vowels.charAt(i) == ch) {
            //If there is a vowel, just exit the loop with the result.
            isVowel = true;
            break;
        }
    }

    return isVowel;
}

相关问题