我在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
。
错误可能在语法中吗?
答案 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';
}