如何比较三个布尔值
Posted
技术标签:
【中文标题】如何比较三个布尔值【英文标题】:How to compare three boolean values 【发布时间】:2013-09-12 23:06:36 【问题描述】:比较三个布尔值并显示第一个为真的值。
大家好,我正在尝试编写一个程序来比较三个布尔值并显示第一个真正的值。我正在比较三个单词的长度,它会显示最长的。我得到的错误是我的 else 标签不起作用。看一下代码。
//Check which word is bigger
if (len1 > len2)
word1bt2 = true;
if (len2 > len3)
word2bt3 = true;
if (len1 > len3)
word1bt3 = true;
//Check which word is the longest
if (word1bt2 == true && word1bt3 == true);
System.out.println(wor1);
else if (word2bt3 == true);
System.out.println(wor2);
else System.out.println(wor3);
我已经为 word1bt2、word2bt3 和 word1bt3 设置了布尔值。在 Eclipse 中,我在上面的代码中的 elses 下遇到语法错误。任何帮助都会很棒!
【问题讨论】:
else tags
什么是else标签?
您需要在第一个 else if(cond) ... code ... else if (cond2 )... code ... else ... code . .. 你还需要修正你的分号。
在这里你应该找到好的答案:link
并且请不要写if(xyz==true)
。只需写if(xyz)
。将布尔值与 true
进行比较是没有意义的。你不会写if((len1 > len2) == true)
,对吗?
【参考方案1】:
if (word1bt2 == true && word1bt3 == true);
错了,需要去掉分号:
if (word1bt2 == true && word1bt3 == true)
else
s 也是如此
else (word2bt3 == true);
也是错的,应该是
else if (word2bt3 == true)
旁注:布尔值可以用作条件,所以你的if
语句应该是
if (word1bt2 && word1bt3) // The same as if (word1bt2 == true && word1bt3 == true)
【讨论】:
是的,我在帖子中发现了else if
。没有复制粘贴。谢谢,我是 Java 新手,所以这个网站非常适合我。
if(bool1 && bool2)
应该被使用。 bool == true
之类的表达式是不受欢迎的
@rocketboy 完全忘记了,我更新了答案,谢谢!【参考方案2】:
如何比较三个布尔值?
不要!
如果您发现自己需要比较三个变量,您不妨立即满足任意数量的变量 - 没有必要闲逛 - 立即正确进行。
public String longest(Iterator<String> i)
// Walk the iterator.
String longest = i.hasNext() ? i.next() : null;
while (i.hasNext())
String next = i.next();
if (next.length() > longest.length())
longest = next;
return longest;
public String longest(Iterable<String> i)
// Walk the iterator.
return longest(i.iterator());
public String longest(String... ss)
// An array is iterable.
return longest(ss);
【讨论】:
问题是我根本不明白。我正在按照自己的节奏学习,我想了解正在发生的一切。【参考方案3】:去掉;
,换上括号。
if (word1bt2 && word1bt3)
System.out.println(wor1);
else if (word2bt3)
System.out.println(wor2);
else
System.out.println(wor3);
【讨论】:
特定情况下不需要括号 没错,但在这种情况下代码更容易阅读。 另外,== true
部分是多余的。
如果您删除所有过时的==true
片段,则更易于阅读。在初学者的问题中看到它们是一回事,但在答案中重复它们是另一回事。【参考方案4】:
else 块的问题:使用 代替
()
来包含指令...
删除;
,如果!!!!!! - 很常见的错误,结果非常令人费解!
//Check which word is the longest
if (word1bt2 == true && word1bt3 == true) //leave ; and always add bracket!
System.out.println(wor1);
else if(word2bt3 == true)
System.out.println(wor2);
else
System.out.println(wor3);
如果您需要 else 分支中的条件,则必须再次使用 if - 普通 else 不会有这样的功能...
总是在 if 语句、循环等主体中使用括号!!!
要非常小心不要使用;在表现不佳的行中:
if 语句
for 循环
while() ... 循环'while 语句
【讨论】:
【参考方案5】:试试这个,如果长度相等,那么 s1 被认为是更大的。我也没有添加空检查
public class Test
public static void main(String[] args)
String word1 = "hi";
String word2 = "Hello";
String word3 = "Hell";
String Bigger = null;
if(word1.length() >= word2.length() && word1.length() >= word3.length() )
Bigger = word1;
else if(word2.length() >= word1.length() && word2.length() >= word3.length())
Bigger = word2;
else if(word3.length() >= word2.length() && word3.length() >= word1.length())
Bigger = word3;
System.out.println(Bigger);
【讨论】:
以上是关于如何比较三个布尔值的主要内容,如果未能解决你的问题,请参考以下文章