Java中的两个布尔变量

时间:2011-09-21 19:11:06

标签: java variables boolean

我想在java中编写两个布尔变量,这两个布尔变量的核心方式是一个永远是假的,一个是永远的。因此,如果将1设置为true,则另一个将自动更改为false。

7 个答案:

答案 0 :(得分:10)

不要使用变量 - 使用方法。

使用变量之前

class Before {
    boolean first;
    boolean second;

    boolean setFirst(boolean newValue) {
        first = newValue;
        second = !first;
    } 

    boolean setSecond(boolean newValue) {
        second = newValue;
        first = !second;
    }
}

使这样做更好:使用单个数据(这是你真正拥有的)并使用逻辑方法。

class After {
    private boolean value;

    boolean first() {
        return value;
    }

    boolean second() {
        return !value;
    }
}

答案 1 :(得分:3)

使用setter和getter为您管理逻辑。

class Foo{

    private boolean _bool1;
    private boolean _bool2;

    public void setBool1(boolean value)
    {
       _bool1 = value;
       _bool2 = !value;
    }

    public void setBool2(boolean value)
    {
       _bool2 = value;
       _bool1 = !value;
    }

    public boolean getBool1() { return _bool1 ;}

    public boolean getBool2() { return _bool2 ;}
}

答案 2 :(得分:2)

使用智能设置器

class Blah {
   private bool1 = true;
   private bool2 = false;


   setBool1(val) {
      this.bool1 = val;
      this.bool2 = !val;
   }

   setBool2(val) {
       this.bool2 = val;
       this.bool1 = !val;
   }

   // more setters/getters

}

注意我不确定你是否真的需要这个。如果2个布尔总是一直存在,为什么不只要有1个布尔并根据它做出决定,而不是根据2个布尔做出决定?

答案 3 :(得分:1)

我怀疑你想要boolean而不是Boolean

我还怀疑你只需要一个字段,flag1和方法

 public boolean getFlag2() {
      return !flag1;
 }        

答案 4 :(得分:0)

public class Opposites {
  protected boolean x = true;
  protected boolean y = false;
  public boolean getX() { return x; }
  public boolean getY() { return y; }
  public boolean toggle() { x=!x; y=!y; }
}

Opposites o = new Opposites();
o.getX(); // => true
o.getY(); // => false
o.toggle();
o.getX(); // => false
o.getY(); // => true

答案 5 :(得分:0)

你只能使用一个布尔变量:

boolean flag = true;
/*
flag is true
!flag is false
*/

...

flag = false;
/*
flag is false
!flag is true
*/

答案 6 :(得分:0)

!myVar相反,而不是有两个变量。如果你愿意,这可以是一个功能。