【问题标题】:How to put an array in a IF statement如何将数组放入 IF 语句中
【发布时间】:2014-01-02 16:27:23
【问题描述】:

我有一个布尔数组,我想知道如何在 if 语句中测试所有这些而不占用太多空间,这是我目前所拥有的。

    private boolean[] running = new boolean[10]

    if(running[] == true){
      goes through code here
    }

这就是我正在尝试做的事情,但我不想像这样把它们都写出来。

    private boolean[] running = new boolean[10]

    if(running[1] == true || running[2] == true || running[3] == true || etc.){
      goes through code here
    }

因此,如果有一种方法可以一次检查所有这些,那就太好了。

【问题讨论】:

  • 那么您是否要测试所有布尔值是否为真,或者是否至少其中一个为真?
  • 你必须以一种或另一种方式循环。
  • 不用循环也可以很容易地完成……但使用循环会让他/她的生活更轻松,代码也更漂亮。如果出于某种原因他/她不想要一个循环并且您需要在一个 if 语句中执行它,那么使其“更小”的一种方法是不断言布尔值 == true - 这是多余的。只需使用if (running[0] || running[1] || ...etc)

标签: java arrays if-statement boolean


【解决方案1】:
public static boolean any (boolean[] array) {
    for (boolean item : array) {
        if (item) {
           return true;
        }
    }
    return false;
}

if (any(running)) {
    // your code
}

【讨论】:

  • 很想编辑您的函数以获取一个值并重命名它包含...无论如何,如果 OP 正在处理布尔数组,这是下一个函数“all”的一个公平起点。 ..
  • 通常“包含”是一个对象的方法。我习惯了 python,它内置了 any() 和 all()。
  • 是的,但我主要处理.net,您可以通过扩展方法“添加”到类中,这样基本的东西。就像我说的,很受诱惑,但还不足以真正做到这一点。在实践中,我可能会编写它来获取一个参数,然后将其包装在 anyTrue 和 anyFalse 中。
【解决方案2】:
for(boolean bool : running) {
    if(bool) {
        //your code
        break;
    }
}

【讨论】:

    【解决方案3】:

    您将需要编写一个循环。

    boolean success = true;
    for( int i = 0; i < running.length; ++i ) {
        if( running[i] == false ) {
             success = false;
             break;
        }
    }
    if( success == true ) {
        // Do stuff
    }
    

    您不必担心占用太多代码行。只需担心编写易于理解的代码即可。

    编辑: 如果数组中的所有项目都为真,则上面运行 if 语句。如果你真的想在数组中的任何一项为真时执行代码,它看起来更像这样:

    boolean success = false;
    for( int i = 0; i < running.length; ++i ) {
        if( running[i] == true ) {
             success = true;
             break;
        }
    }
    if( success == true ) {
        // Do stuff
    }
    

    【讨论】:

    • OP 似乎想要OR
    • @SotiriosDelimanolis 嗯,你是对的。我被第一个似乎暗示and的例子吓跑了
    猜你喜欢
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多