Java 程序如何打印所有字母表,即使在给出if条件以查找“后”;辅音;

Java 程序如何打印所有字母表,即使在给出if条件以查找“后”;辅音;,java,recursion,conditional-operator,Java,Recursion,Conditional Operator,我不熟悉递归。我无法解决以下问题 问题:使用递归打印字符串中的辅音。我不知道程序是如何打印所有字母表的,即使在给出if条件之后也是如此 public static void countCons(String str, int index) { if (index >= str.length()) { return; } char x = str.charAt(index); if (x != 'a' || x != 'e' || x != '

我不熟悉递归。我无法解决以下问题

问题:使用递归打印字符串中的辅音。我不知道程序是如何打印所有字母表的,即使在给出
if
条件之后也是如此

public static void countCons(String str, int index) {
    if (index >= str.length()) {
        return;
    }
    char x = str.charAt(index);
    if (x != 'a' || x != 'e' || x != 'i' || x != 'o' || x != 'u') {
        System.out.println(x);
    }
    index = index + 1;
    countCons(str, index);
}
替换

if(x!='a'||x!='e'||x!='i'||x!='o'||x!='u')

或与

if (x != 'a' && x != 'e' && x != 'i' && x != 'o' && x != 'u')
让我们找出您的方法的问题:

让我们假设
str
“aka”

索引
0
时,x=
'a'
,因此
x!='a'| | x!='e'| | x!='i’| | x!='o'| | x!='u'
被评估为

'a'!='a'||'a'!='e'||'a'!='i'||'a'!='o'||'a'!='u' => false || true || 'a'!='i'||'a'!='o'||'a'!='u' => true
'k'!='a'||'k'!='e'||'k'!='i'||'k'!='o'||'k'!='u' => true || 'k'!='e'||'k'!='i'||'k'!='o'||'k'!='u' => true
索引变为
1
时,x=
'k'
,因此
x!='a'| | x!='e'| | x!='i’| | x!='o'| | x!='u'
被评估为

'a'!='a'||'a'!='e'||'a'!='i'||'a'!='o'||'a'!='u' => false || true || 'a'!='i'||'a'!='o'||'a'!='u' => true
'k'!='a'||'k'!='e'||'k'!='i'||'k'!='o'||'k'!='u' => true || 'k'!='e'||'k'!='i'||'k'!='o'||'k'!='u' => true
请注意,只要将多个条件与
|
连接起来,一旦找到第一个
条件,计算就会停止,并将结果总结为
。只有当所有条件的计算结果均不为
true
时,结果才会得出
false
的结论


另一方面,当多个条件与
和&
连接时,一旦发现第一个
false
条件,计算就停止,并且结果被总结为
false
。只有当所有条件的计算结果都为
true
时,结果才被推断为
true

您应该使用&&operator而不是| | | operator

建议使
if
语句可读:
if(Arrays.binarySearch(“aeiou.toCharArray(),x)<0){…