为什么我的代码不会编译哪个字符串以元音开头检查?

use*_*276 3 java string nullpointerexception

if (flipped.charAt(0) = "a" || "e" || "i" || "o" || "u"){
    paren = "(" + flipped;
    String firstpart = paren.substring(0,5);
    String rest = paren.substring(5);
    System.out.println(rest+firstpart);
}
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我想检查String翻转的第一个字符是否是元音.如果是,我在开头添加一个括号,并将前5个字符移动到字符串的末尾.Eclipse正在给我java.lang.NullPointerException并说"分配的左侧必须是一个变量." 我该怎么做才能解决这个问题?

Mas*_*dul 11

您的代码有以下问题,

  1. 使用条件运算符==,而不是分配=的if声明.
  2. 使用单引号'代替双"对char
  3. 为元音检查制作单独的方法.

    boolean isVowel(char ch){
      ch=Character.toLowerCase(ch);
      return ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u';
    }
    
    Run Code Online (Sandbox Code Playgroud)


isn*_*bad 8

我经常使用的另一个非常简单的解

if ("aeiou".indexOf(Character.toLowerCase(text.charAt(0))) >= 0) {
    // text starts with vocal.
}
Run Code Online (Sandbox Code Playgroud)


小智 7

您还可以使用正则表达式匹配:

if (text.matches("^[aeiou].*")) {
Run Code Online (Sandbox Code Playgroud)