【问题标题】:How to cast char[][] into Character[][] in java如何在 java 中将 char[][] 转换为 Character[][]
【发布时间】:2018-07-28 04:13:18
【问题描述】:

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

我想从 2d char 数组中插入它的值,它可以工作,但是当我尝试将数组发送到函数时,它无法将它作为 Character 2d 数组读取,并返回 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];
                        }
                    }

当我稍后将 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 一起使用。

我需要某种解决方案,比如强制转换,但如果你有的话,我更喜欢更好的解决方案。

干杯!

【问题讨论】:

  • 是的,遗憾的是它没有解决它
  • 显示这部分的代码:当我稍后将 c 发送到函数时,将 arr 转换为 char 不能正常工作。 你得到的可能错误.
  • null 到底是什么?
  • 这些点赞从何而来?到目前为止,这听起来像是 stackoverflow.com/q/218384/3182664

标签: java arrays character


【解决方案1】:

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

我不得不反其道而行之:

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

用二维数组做这件事应该不难

【讨论】:

    【解决方案2】:

    不可能将一个 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 );
    } );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 2011-01-26
      • 2021-08-22
      • 1970-01-01
      • 2013-02-26
      • 2011-04-12
      相关资源
      最近更新 更多