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

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

二維數組可以存儲一個整數和一個雙精度數嗎?

二維數組可以存儲一個整數和一個雙精度數嗎?

守著星空守著你 2022-10-20 17:05:26
所以,如果我的價值觀是:123, 12.34234, 23.34345, 45.67諸如此類,是否可以使用二維數組來設置這些值?
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

是和不是。

從技術上講,您不能為每個數組維度定義不同的靜態類型。因此,您不能將int列與double列混合。即使對于對象,您也不能將Integer列與Double列混合。

如果您只需要原語,您可以使用double[][]double 可以表示所有 32 位整數(請參閱Representing integers in doubles)。但從技術上講,該數組是全雙精度數:沒有什么可以阻止您存儲3.14第一列中的值。

對于對象,您可以使用通用的基本類型(如果存在)。對于您的特定用例,所有數字類型都擴展,java.lang.Number因此這有效:

    @Test

    public void testMixedNumbersArray() {

        Number[][] array = new Number[3][2];

        array[0][0] = 123; array[0][1] = 12.34;

        array[1][0] = 234; array[1][1] = 23.34;

        array[2][0] = 345; array[2][1] = 45.67;

        for (Number[] x : array) {

            System.out.println(Arrays.toString(x));

        }

    }


// outputs:

// [123, 12.34]

// [234, 23.34]

// [345, 45.67]

請記住,這實際上還允許您在此數組中混合 Float、Short、...甚至 BigDecimal 值,以及允許null值。


因此,如果您需要對數據類型進行嚴格控制,一個選項是創建一個自定義類,該類封裝兩個適當類型的單獨數組:


public class MyArray {

    int[] col1;

    double[] col2;


    public MyArray(int size) {

        col1 = new int[size];

        col2 = new double[size];

    }

    // ... add get/set methods as needed, e.g.


    public void setCol1(int pos, int value) {

        col1[pos] = value;

    }


    public void setCol2(int pos, double value) {

        col2[pos] = value;

    }

}

要記住的最后一件事是 Java 多維數組是“數組的數組”(請參閱 Java 中的多維數組)。這就是為什么只有一種類型:最內層數組的類型。所有其他維度只是通往目標數組實例的間接級別(數組的數組)。



查看完整回答
反對 回復 2022-10-20
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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