[英]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.