【问题标题】: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),对吗?

标签: java boolean syntax-error


【解决方案1】:
if (word1bt2 == true && word1bt3 == true);

错了,需要去掉分号:

if (word1bt2 == true && word1bt3 == true)

elses 也是如此


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);
    
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      相关资源
      最近更新 更多