Java如何模拟灯光打开或关闭?

Java如何模拟灯光打开或关闭?,java,Java,我试着模拟一个电灯开关的开关。 具有开关1、开关2和开关3 我必须创建一个具有属性(name:string和boolean:state)的设备类,一个具有构造函数的方法(设置name并将state设置为false) 我必须将设备的状态从“开”更改为“关”,反之亦然,并将显示开关名称以及指示灯是“开”还是“关”的字符串更改为“关” 我还必须创建另一个具有main方法的类,它实例化3个lightswitch对象(s1、s2和s3) 公共类设备{ 私有字符串名称; 私有布尔状态; 公用设备(字符串名称

我试着模拟一个电灯开关的开关。 具有开关1、开关2和开关3

我必须创建一个具有属性(name:string和boolean:state)的设备类,一个具有构造函数的方法(设置name并将state设置为false)

我必须将设备的状态从“开”更改为“关”,反之亦然,并将显示开关名称以及指示灯是“开”还是“关”的字符串更改为“关”

我还必须创建另一个具有main方法的类,它实例化3个lightswitch对象(s1、s2和s3)

公共类设备{
私有字符串名称;
私有布尔状态;
公用设备(字符串名称){
this.name=名称;
this.state=false;
}
公共无效更改_状态(){
if(this.state==on){
状态=真;
}否则{
状态=假;
}
}
在()上公开作废{
this.state=true;
}
公众假期{
this.state=false;
}
}

首先:您需要在change_state()方法中使用(true),而不是on,因为java中的“on”不是布尔值

public void change_state() {
        if(this.state == true) {
            state = true;
        } else {
            state = false;
        }
    }
需要重写设备类的默认toString方法之后

@Override
    public String toString() {
        return String.format("name: "+this.name + "/status: " + this.state);
    }
最后,您可以打印结果:

  public static void main(String []args){
        Device s1 = new Device("S1");
        s1.on();
        Device s2 = new Device("S2");
        s2.off();
        Device s3 = new Device("S3");
        s3.on();
        System.out.println(s1.toString());
        System.out.println(s2.toString());
        System.out.println(s3.toString());
    }
你的印刷品是:

name: S1/status: true
name: S2/status: false
name: S3/status: true

首先:您需要在change_state()methode中使用(true),而不是on,因为java中的“on”不是布尔值

public void change_state() {
        if(this.state == true) {
            state = true;
        } else {
            state = false;
        }
    }
需要重写设备类的默认toString方法之后

@Override
    public String toString() {
        return String.format("name: "+this.name + "/status: " + this.state);
    }
最后,您可以打印结果:

  public static void main(String []args){
        Device s1 = new Device("S1");
        s1.on();
        Device s2 = new Device("S2");
        s2.off();
        Device s3 = new Device("S3");
        s3.on();
        System.out.println(s1.toString());
        System.out.println(s2.toString());
        System.out.println(s3.toString());
    }
你的印刷品是:

name: S1/status: true
name: S2/status: false
name: S3/status: true

状态改变看起来很容易。此外,我会尽可能使用基本类型,而不是对象版本,除非有充分的理由这样做

同样在Java中,CamelCase符号是事实上的编码标准

...
boolean state = true;
...
    public void change_state() {
        this.state == !this.state;
    }
如果您希望,也可以在更改时直接返回状态:

    public boolean changeState() {
        this.state = !this.state;
        return this.state;
    }
除了开/关方法,您还可以返回值并仅使用一个调用,如“real”按钮:

    public boolean trigger() {
        this.state == !this.state;
        return this.state;
    }
我不会使用toString方法应用程序代码,因为它很容易得到脏代码。如果要获取设备名称,请使用getter以干净的方式进行操作:

public String getName(){
    return this.name;
}

好处是许多框架都符合这个getter/setter标准,您可以稍后在不更改代码的情况下使用if。此外,如果开发人员想要访问该名称,则不会查看toString。

状态更改看起来非常容易。此外,我会尽可能使用基本类型,而不是对象版本,除非有充分的理由这样做

同样在Java中,CamelCase符号是事实上的编码标准

...
boolean state = true;
...
    public void change_state() {
        this.state == !this.state;
    }
如果您希望,也可以在更改时直接返回状态:

    public boolean changeState() {
        this.state = !this.state;
        return this.state;
    }
除了开/关方法,您还可以返回值并仅使用一个调用,如“real”按钮:

    public boolean trigger() {
        this.state == !this.state;
        return this.state;
    }
我不会使用toString方法应用程序代码,因为它很容易得到脏代码。如果要获取设备名称,请使用getter以干净的方式进行操作:

public String getName(){
    return this.name;
}

好处是许多框架都符合这个getter/setter标准,您可以稍后在不更改代码的情况下使用if。此外,如果开发人员希望访问该名称,则不会查看toString。

欢迎使用Stack Overflow!请看,如果你能具体描述什么在这个时候不起作用,这将是有帮助的。您的代码是否产生错误?特定操作是否会产生意外结果?你在这个时候到底遇到了什么困难?有关如何提问的提示和信息,请阅读及其链接资源。欢迎使用Stack Overflow!请看,如果你能具体描述什么在这个时候不起作用,这将是有帮助的。您的代码是否产生错误?特定操作是否会产生意外结果?你在这个时候到底遇到了什么困难?有关如何提问的提示和信息,请阅读及其链接资源。