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

如何从另一个类中获取布尔值?

如何从另一个类中获取布尔值?

慕虎7371278 2022-12-28 16:37:16
我有一个 UDP 服务,可以告诉我们数字是否为“capicua”。我有一个带有布尔值的服务器类,该布尔值在存在或不存在时设置其值。当我从 Client 类打电话告诉我即使使用 getter、setter 或返回实际的 booelan 值我也不能接受的布尔值时,你怎么看?//CLIENT CLASS//TIPICO INFINITY LOOP        while(true) {            System.out.println("Introduce un numero de "                    + "al menos 2 cifras para ver si son capicúas. ");            //METEMOS EN OUT ALL CONTENT             out =intToByteArray(Integer.parseInt(introducirDatos("Numero : "))) ;            //ESCAPE            if(byteArrayToInt(out)== 0) {                System.out.println("Cerramos conexión...");                break;            }            System.out.println("Enviando " + out.length + " bytes al servidor");            envio = new DatagramPacket(out, out.length, IPServer, port );            socket.send(envio);//-------------------------------------------------------------------            recibo = new DatagramPacket(in, in.length);            System.out.println("Esperando datagrama...");            socket.receive(recibo);            IPOrigin = recibo.getAddress();            int originPort = recibo.getPort();            System.out.println("Procedente de: " + IPOrigin + ":" + originPort);            boolean capicua = Servidor.isCapicua();            System.out.println(capicua);        }        socket.close();class Servidor{static boolean capicua = true;while (true) {            System.out.println("Esperando datagrama...");            // CONSTUIMOS NUESTRO DATAGRAMPACKET CON LOS DATOS DEL ARRAY DE BYTES            recibo = new DatagramPacket(in, in.length);            // RELLENAMOS EL SOCKET CON ALL CONTENT FROM RECIBO            socket.receive(recibo);            }}
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

您可以按如下方式使用单例类(您可以将单例类重命名为您想要的任何其他名称。)


public class SharedValues{


     private static SharedValues sharedValues = new SharedValues();

     //will always return the same instance of this class

     public static SharedValues getInstance() {

        return sharedValues;

     }


     private boolean capicua;


     public void setCapicua(boolean capicua)

     {

         this.capicua = capicua;

     }


     public boolean getCapicua()

     {

        return this.capicua;

     }

}

然后在 Servidor 类和 Client 类中,执行以下操作:


class Servidor {

    SharedValues sharedValues = SharedValues.getInstance();


    //make sure this while loop code is in a function

    while(true)

    {

        if (numero == capicuar(numero)) {

            sharedValues.setCapicua(false);


        }

    }

}



class Client {

    SharedValues sharedValues = SharedValues.getInstance();


    //make sure this while loop code is in a function

    while(true)

    {

        boolean capicua = sharedValues.getCapicua();

        System.out.println(capicua);

    }

}

简单解释一下,单例类就是一个只能有一个实例的类。因此,SharedValues 类的同一个实例将被 Servidor 类和 Client 类访问。如果您因此将 Servidor 中的值设置为setCapicua(false),那么在类 Client 中,如果您调用getCapicua() ,您将把它设置为 false 。但是,您必须意识到,在客户端和服务器中,实例化是SharedValues sharedValues = SharedValues.getInstance();请不要使用SharedValues sharedValues = new SharedValues();这将提供类 SharedValues 的新实例,并且不会达到目的。


查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号