亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從另一個類中獲取布爾值?

如何從另一個類中獲取布爾值?

慕虎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 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號