第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何從Java中的方法返回多個值

如何從Java中的方法返回多個值

幕布斯7119047 2022-11-02 15:18:28
我用 Java 編寫了一個返回 2 個值的方法。第一個結(jié)果計數(shù)是 int 類型,如果方法是成功 true/false 布爾類型,則為第二個。如何返回兩個值?因此,如果該方法成功,則僅繼續(xù)。示例代碼:public static void main(String args[]){    int count = 0;    boolean status = false;    //count = retrieveData(); Current code working but captures only 1 values at a time i.e. Count not the status    /* Expected Code    if (status == true)  // where status and count is returned from retrieveData method    {        count = retrieveData();        System.out.println("Status is true so can proceed");    }    else        System.out.println("Status is not true so don't proceed");    */}public static int retrieveData() throws  Exception     {        boolean success = false;        String query = "SELECT Count(1) FROM Account";        int totalCount=0;        ResultSet rsRetrieve = null;            Statement stmt = null;            stmt = conn.createStatement();            rsRetrieve = stmt.executeQuery(query);            while (rsRetrieve.next())            {                totalCount= rsRetrieve.getInt(1);                System.out.println("totalCount : "+totalCount);            }        success = true;        return totalCount; // current working code but returns only 1 value i.e. Count not status        /*   Expected        return success + totalCount        */    }
查看完整描述

5 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經(jīng)驗 獲得超3個贊

有多種方法可以從方法中重新調(diào)整多個值,我使用的一些最佳方法是:


1-為要返回的數(shù)據(jù)類型創(chuàng)建類,例如,您要返回兩個字符串,使類如下所示:


public class myType {

            String a;

            String b;


            public String getA() {

                return a;

            }


            public void setA(String _a) {

                a = _a;

            }

            //And All other geter setters

        }

并將您的方法的返回類型設(shè)置為上述類。


2- 使用鍵值對返回 Map

3- 制作接口并從要返回值的位置調(diào)用抽象方法(您必須在要接收值的類中實現(xiàn)接口)希望這會給您一個粗略的想法前進


查看完整回答
反對 回復(fù) 2022-11-02
?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

您可以按如下方式創(chuàng)建自定義 java 對象


public class Result {


   private boolean success;

   private int totalResults;


   public Result(boolean success, int totalResults){

    this.success = success;

    this.totalResults = totalResults;

   }

   public boolean getSuccess(){

     return this.success;

   }


   public boolean getTotalResults(){

       return this.totalResults;

   }


}


查看完整回答
反對 回復(fù) 2022-11-02
?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

我想any[1]用來模擬指針。像 C++*p和 C# out。


boolean[] p_status = new boolean[1];

int count = retrieveData(p_status);

boolean status = p_status[0];

其他樣品,能量:


public static void main(String[] args) throws JsonProcessingException {

    // I try to analysis the string, but don't want to create a new class

    var strs = "1,2,ABC,3,4,6,7,1,6,9,XYZ,3,6,3,7,9,2,5,9,ABC";


    // use any[1] as pointer

    int[] p_iStrCount = new int[1];

    // when facing eneric, it's a little different

    @SuppressWarnings("unchecked") HashMap<Integer, Integer>[] p_hmNum = new HashMap[1];


    // use pointer as parameters, so I can get multiple results out

    var hmStr = analysis(strs, p_iStrCount, p_hmNum);

    var iStrCount = p_iStrCount[0];

    var hmNum = p_hmNum[0];

}


// `strs` as input

// `pOut_iStrCount`, `pOut_hmNum`, `return` as output

// You can ignore the details of this method

static HashMap<String, Integer> analysis(@NotNull String strs, @Nullable int[] pOut_iStrCount, @Nullable HashMap<Integer, Integer>[] pOut_hmNum){


    var aryStr = StringUtils.split(strs, ",");

    var iStrCount = null != aryStr ? aryStr.length : 0;

    var hmStr = new HashMap<String, Integer>();

    var hmNum = new HashMap<Integer, Integer>();


    if(null != aryStr){

        for(String str : aryStr){

            hmStr.compute(str, (k,v)->(null == v ? 0 : v + 1));

            int num;

            try{

                num = Integer.parseInt(str);

            }catch (NumberFormatException ignore){

                continue;

            }

            hmNum.compute(num, (k,v)->(null == v ? 0 : v + 1));

        }

    }


    if(null != pOut_iStrCount){ pOut_iStrCount[1] = iStrCount; }

    if(null != pOut_hmNum){ pOut_hmNum[1] = hmNum; }


    return hmStr;

}


查看完整回答
反對 回復(fù) 2022-11-02
?
炎炎設(shè)計

TA貢獻1808條經(jīng)驗 獲得超4個贊

我建議堅持您當(dāng)前的一般方法,而不是嘗試從您的方法中返回兩條信息。您的方法簽名會引發(fā)異常,處理此問題的一種可能方法是讓您的方法在出現(xiàn)問題時引發(fā)異常。否則,這意味著計數(shù)查詢確實運行了,并且會返回一些計數(shù)。但是,您可能應(yīng)該在 JDBC 代碼周圍有一個 try catch 塊:


public static int retrieveData(Connection conn) throws Exception {

    Statement stmt = null;

    int totalCount = 0;


    try {

        String query = "SELECT COUNT(*) FROM Account";


        ResultSet rsRetrieve;

        stmt = conn.createStatement();

        rsRetrieve = stmt.executeQuery(query);


        if (rsRetrieve.next()) {

            totalCount = rsRetrieve.getInt(1);

            System.out.println("totalCount : " + totalCount);

        }

    }

    catch (SQLException e) {

        System.out.println(e.getMessage());

        threw new Exception("something went wrong");

    }

    finally {

        if (stmt != null) {

            stmt.close();

        }


        if (conn != null) {

            conn.close();

        }


    }


    return totalCount;

}

所以這里使用的模式是,如果出現(xiàn)問題,則沒有計數(shù),調(diào)用者會收到異常。否則,如果沒有發(fā)生異常,則返回一些計數(shù)。


查看完整回答
反對 回復(fù) 2022-11-02
?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

你不能,但你可以創(chuàng)建一個 bean 類來保存多個對象。

如果這是用于程序錯誤處理,您可能需要查看 Optional (standard) 或 Either (vavr) 來處理多個結(jié)果


查看完整回答
反對 回復(fù) 2022-11-02
  • 5 回答
  • 0 關(guān)注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號