为什么这是非法表达的开始?

时间:2017-11-26 12:19:28

标签: java netbeans

我在java中创建了这个方法,如果它包含字母' i'

,则替换字符串的元音。
public static boolean esVocal(Character c) {
    boolean res = false;
    if (c == 'a' | c == 'o' | c == 'e' | c == 'u') {
        res = true;   
    }
}

无论如何,给我的错误是:

illegal start of expression

最后,它说该方法需要return

错误可能在语法中吗?

2 个答案:

答案 0 :(得分:3)

说明

您的方法签名

public static boolean esVocal(Character c)

声明返回类型 boolean。这意味着您的方法应该返回boolean类型的

解决方案

如果您不想退货,则应将退货类型声明为void

public static void esVocal(Character c)

或者如果您想要返回一些内容,您需要在方法中添加相应的语句:

public static boolean esVocal(Character c) {
    boolean res = false;

    if (c == 'a' | c == 'o' | c == 'e' | c == 'u') {
        res = true;   
    }

    // You probably wanted to return this
    return res;
}

备注

请注意,您可以通过直接返回结果boolean来减少您的方法:

public static boolean esVocal(Character c) {
    return c == 'a' | c == 'o' | c == 'e' | c == 'u';
}

数字上的运营商| 逻辑。它是一个按位包含或操作,它对以下值进行一些位操作:

   0100 1110
or 1000 1011
   ---------
   1100 1111

然而,在boolean表达式上,与您的情况一样,它也表现为逻辑或(请参阅JLS 15.22.2)。

还有一个操作符||,它始终表现为逻辑或

请注意,即使使用boolean值,两个运算符之间也存在差异。 |运算符将始终计算整个表达式,即使结果值已经清除也是如此。如果结果已经清楚,||将中止评估,如

true || someBoolean || someOtherBoolean

true已经使整个结果true||因此不会评估表达式的其余部分,而|将会。{/ p>

在您的情况下,您可能想要使用||

c == 'a' || c == 'o' || c == 'e' || c == 'u'

对于逻辑 &&&,差异是相同的。

答案 1 :(得分:3)

如果您正在考虑逻辑OR操作,则最好使用||而不是|运算符。因此,您可以按如下方式更新if条件。 [另一个答案中提供了一个很好的解释]

if (c=='a' || c=='o' || c=='e' || c=='u'){
    res=true;   
}

此外,您的方法签名将返回类型声明为boolean,因此您需要从函数返回一个布尔值。您可以简单地执行以下操作。

public static boolean esVocal(Character c){
    return c=='a' || c=='o' || c=='e' || c=='u';
}