如何在Java中将char[][]转换为Character[][]

3

我有一个需要获取字符二维数组(对象)的函数。

我想从一个二维字符数组中插入它的值,并且它可以工作,但是当我尝试将数组发送到函数时,它无法将其读取为字符二维数组,并返回null。

这是代码:

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];
                        }
                    }

当我将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语言一起使用。
我需要某种解决方案,例如强制转换,但如果您有更好的解决方案,我更喜欢它。
干杯!

是的,遗憾的是它并没有解决它。 - Dor Sivan
4
展示此部分的代码:_将arr强制转换为char时,当我稍后将c发送到函数中时,它无法正常工作。_以及可能出现的错误。 - pirho
2
提供一个 [MCVE] - STaefi
哪个东西确切地说是 null - David Knipe
这些赞来自哪里?到目前为止,这似乎是一个 https://dev59.com/GnVC5IYBdhLWcg3wqzLV 的案例。 - Marco13
我不明白为什么第一个插入操作不起作用,但第二个插入操作可以。有什么区别吗? - Dor Sivan
2个回答

0

我还没有找到“正确”的方法来做这件事,但我已经找到了一种方法来做。

我不得不用另一种方式来做:

//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];
}

用二维数组做这个应该不难


0

无法将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 );
} );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接