簡體   English   中英

如何在java中將char[][]轉換為Character[][]

[英]How to cast char[][] into Character[][] in java

所以我有一個函數需要獲取一個二維字符數組(對象)。

我想從二維字符數組中插入它的值,它可以工作,但是當我嘗試將數組發送到函數時,它無法將其作為字符二維數組讀取,並返回空值。

這是代碼:

char[][] arr = board.getBoard();
                    Character[][] c = new Character[board.getX()][board.getY()];
                    for(int i=0; i<board.getX(); i++) {
                        for(int j=0;j<board.getY();j++) {
                            c[i][j] = (char)arr[i][j];
                        }
                    }

當我稍后將 c 發送到函數時,將 arr 轉換為 char 的轉換效果不佳。

當我決定將值硬插入 c 時,有趣的事情發生了,如下所示:

Character[][] c = new Character[5][4];
                    c[0][0] = 's';
                    c[0][1] = '|';
                    c[0][2] = '7';
                    c[0][3] = ' ';
                    c[1][0] = ' ';
                    c[1][1] = '|';
                    c[1][2] = 'L';
                    c[1][3] = 'r';
                    c[2][0] = '-';
                    c[2][1] = 'J';
                    c[2][2] = ' ';
                    c[2][3] = '|';
                    c[3][0] = '7';
                    c[3][1] = 'J';
                    c[3][2] = '-';
                    c[3][3] = 'J';
                    c[4][0] = ' ';
                    c[4][1] = 'g';
                    c[4][2] = ' ';
                    c[4][3] = '-';

當我這樣做時,代碼運行良好,並且該函數能夠與 c 一起使用。

我需要某種解決方案,比如鑄造,但如果你有一個更好的解決方案,我更喜歡。

干杯!

我還沒有找到“正確”的方法來做到這一點,但我找到了一種方法。

我不得不反過來做:

//create Character array
Character[] characters = new Character[]{'a', 'b', 'c', 'd'};

//create char array
char[] letters = new char[characters.length];

//loop through array
for (int i = 0; i < letters.length; i++){
    //assign value to char
    letters[i] = characters[i].charValue();
}

反過來這樣做也不難:

//create char array
char[] characters = new char[]{'a', 'b', 'c', 'd'};

//create Character array
Character[] letters = new Character[][characters.length];

//loop thorugh char array
for (int i = 0; i < letters.length; i++){
    //assign value to Character
    letters[i] = characters[i];
}

用二維數組做這件事不應該那么難

不可能將char[]轉換為Character[]
所以既不是char[][]也不Character[][]
所以就是這樣

char[][] chars = {…};
Character[][] characters = new Character[chars.length][0];
Arrays.setAll( characters, i -> {
  Character[] row = new Character[chars[i].length];
  Arrays.setAll( row, j -> chars[i][j] );
  return( row );
} );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM