import java.util.*;
public class help {
public static void main(String[] args) {
System.out.print(isAllVowels("ugh".toLowerCase()));
}
public static boolean isAllVowels(String Str) {
if( Str.length() == 0) {
return true;
}
int b = Str.length();
for( int a=0; a<b; a++) {
char c = Str.charAt(a);
if(c!='a' || c!='e' || c !='i' || c!='o' || c!='u') {
return true;
}
}
return false;
}
}
您好,我是java的新手,返回true的char比较元素总是如此。我想知道它为什么总是如此? Additinally IntelliJ告诉我a总是小于b。为什么会这样? 感谢。
答案 0 :(得分:6)
问题不在于您使用了大量or
语句。
你混淆了and
和or
的含义。 and
是独占的,如果两个条件都满足则返回true。 or
是包容性的,如果满足任一条件,则返回true。
想想这样:让我们说你需要买一双新鞋,但你很挑剔。鞋子必须是蓝色and
绒面革。一对蓝色查克泰勒全明星满足第一个条件,但不是第二个条件。你会买Chucks吗?假。有人抢走格雷斯兰并抢走了一双埃尔维斯普雷斯利的鞋子并将它们提供给你。这双鞋是蓝色and
绒面革。你会买吗?真。
如果你是一个不那么挑剔的人,你会穿蓝色鞋or
绒面革鞋。蓝色Chucks,棕色绒面革乐福鞋,棕褐色绒面革拖鞋或蓝色拖鞋都符合两个标准之一,因此将是真实的。
您的代码用简单的英语询问“如果字符不是a
,e
,i
,o
或u
,则返回true “。即使u
是元音,u
也不是a
,不是e
,不是i
而不是o
,所以它返回true。
使用一堆or
只意味着如果其中任何一个条件成立,则返回true。
答案 1 :(得分:0)
程序正在按预期运行
条件
if(c!='a' || c!='e' || c !='i' || c!='o' || c!='u')
将根据您的输入返回true。
答案 2 :(得分:0)
如果你希望代码在字符串中的所有字符都返回true 是元音,如果任何一个字符是无元音,则为假, 检查以下代码。
public class help
{
public static void main(String[] args)
{
System.out.print(isAllVowels("aseiou".toLowerCase()));
}
public static boolean isAllVowels(String Str)
{
if( Str.length() == 0)
{
return true;
}
for( int a=0; a<Str.length(); a++)
{
char c = Str.charAt(a);
if(c=='a' || c=='e' || c =='i' || c=='o' || c=='u')
{
continue;
}
else return false;
}
return true;
}
}