为了账号安全,请及时绑定邮箱和手机立即绑定

使用类方法更改布尔变量的值?

使用类方法更改布尔变量的值?

开心每一天1111 2023-09-13 10:08:37
所以我正在摆弄java,并遇到了我试图编写的一些代码的问题。我创建了一个类,LogicGate在该类中调用有方法将实例的状态设置LogicGate为 true 或 false。LogicGate只有一个属性及其布尔值 true 或 false。所有方法似乎都有效,但只有一个(称为 not()),我将布尔值更改为 false(如果 true)和 true(如果 false)。该代码第一次将值从 true 更改为 false,但第二次它似乎忽略了 if 语句。//Mainpublic class main {    public static void main(String[] args) {        LogicGate logicGate = new LogicGate(true);        System.out.println(logicGate.state());        System.out.println("");        logicGate.not(logicGate);        System.out.println("");        System.out.println(logicGate.state());        System.out.println("");        logicGate.not(logicGate);    }}//Class Logicgatepublic class LogicGate {    //The attribute for the for the object    private boolean state;    //Creating the constructor for the object logic gate     public LogicGate(boolean logicGateState) {        state = logicGateState;    }    //This method changes the state of the Logic Gate    public  void not(LogicGate obj) {        //Saving the current state of the logic gate        boolean currentState = obj.state();        System.out.println("....." + currentState);        //Checks the state of the object instance and changes it accordingly        if(currentState = true) {            obj.negate(obj);            System.out.println("The state has changed to: " + obj.state() + " Should be false");        }        else if(currentState = false) {                 obj.set(obj);            System.out.println("The state has changed to: " + obj.state() + " Should be true");        }    }    //Sets the state of the object boolean variable to true     public  void set(LogicGate obj) {        obj.setState(true);    }    //Sets the state of the object boolean variable to false     public  void negate(LogicGate obj) {         obj.setState(false);    }    //This method will return the state of the object    //it can be either true or false     public boolean state() {        return state;    }每次调用 not 方法时,布尔值都应该改变。代码的最后一行应该说The state has changed to: true Should be true。
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

所以有几个问题,即:

  1. 运算符=是赋值运算符。您正在进行比较,这意味着您需要使用==运算符。

  2. 对于boolean值,您实际上不需要在 if 中使用比较运算符,因为它是trueor false(不是 true)。

  3. 如果你的第一个if正在检查 atrue那么你的 else 逻辑上正在检查false

所以你的代码应该看起来像这样:

if(currentState) {

  obj.negate(obj);

  System.out.println("The state has changed to: " + obj.state() + " Should be false");

} else {

  obj.set(obj);

  System.out.println("The state has changed to: " + obj.state() + " Should be true");

}

然而,我也不明白为什么您将LogicGate对象传递到 的方法中LogicGate,以设置其中包含的变量的状态LogicGate(或任何与LogicGates此相关的方法)。为什么不使用已有的方法setState(boolean state),那么你的实现将是:


if(currentState) {

  obj.setState(Boolean.FALSE);

  System.out.println("The state has changed to: " + obj.state() + " Should be false");

} else {

  obj.setState(Boolean.TRUE);

  System.out.println("The state has changed to: " + obj.state() + " Should be true");

}

但最终,您的not()方法应该像这样简单:


public void not() {

  this.state = !state;

}


查看完整回答
反对 回复 2023-09-13
?
杨魅力

TA贡献1811条经验 获得超6个赞

尝试将所有单个 = 更改为“==”或析构函数代码


 if(currentState) {


            obj.negate(obj);

            System.out.println("The state has changed to: " + obj.state() + " Should be false");

        }

        else{     

            obj.set(obj);

            System.out.println("The state has changed to: " + obj.state() + " Should be true");

告诉我是否有效


查看完整回答
反对 回复 2023-09-13
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信