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){…