【问题标题】:Can I get integer values for a 2D array instead of characters?我可以获取二维数组的整数值而不是字符吗?
【发布时间】:2016-12-11 19:31:27
【问题描述】:

我试图创建最简单的矩阵 - 二维数组,但我的代码有问题,它有点工作,但不正确。 代码:

int result = 0;
    int[][] matrix = new int[2][2];
    for(int rows = 0; rows < matrix.length; rows++)
        for(int cols = 0; cols < matrix[rows].length; cols++)
           matrix[rows][cols] = (rows + cols); 
            System.out.println("matrix is: "+matrix);

    result = matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
    System.out.println("Result is: "+result);

输出: 矩阵为:[[I@1db9742

结果是:-1

我有这个:

int result = 0;
    char[][] matrix= new char[2][2];
    for(int rows = 0; rows < 2; rows++)
        for(int cols = 0; cols < 2; cols++)
           matrix[rows][cols] = (char)('1' + rows * 2 + cols);
    for(int rows = 0; rows < 2; rows++)
        for(int cols = 0; cols < 2; cols++)
            System.out.println("matrix is: "+matrix[rows][cols]);
    result = matrix[0][0]*matrix[1][1]-matrix[0][1]*matrix[1][0];
    System.out.println("Result is: "+result);

输出: 矩阵是:1

矩阵是:2

矩阵是:3

矩阵是:4

结果是:-2

但我不想要char,我想要整数(因为如果以后使用大矩阵计算会怎样)而且我不明白这部分:

('1' + rows * 2 + cols)

因为我从其他代码中复制了它。如何让第一个像第二个一样工作,括号中的那部分是什么(为什么这样写)?提前致谢!

我得到了我想要的 1 2 3 4 的好东西,但我还需要解释“('1' + rows * 2 + cols)”的含义。我想为矩阵二维数组获得 1 2 3 4 ,然后为结果获得 1*4-2*3 。也许'1'是从1开始,而不是从循环中的0开始并从数组中的1开始写入。我在其他一些代码中找到了它,而不是我的解决方案,第一个是我的并且无法正常工作。我补充说:

for(int cols = 0; cols < matrix[rows].length; cols++)

按照你的建议。

*我把它改写成英文。 很抱歉语言混乱。 我不明白为什么在计算之前循环打印矩阵时得到字符而不是二维数组。

【问题讨论】:

  • 你想在这里做什么:(char)('1' + redovi * 2 + kolone)? '1' 应该是 1。你不能从这个语句中得到一个字符。
  • 这不起作用:System.out.println("Rezultat je: "+rezultat);
  • 对于矩阵。对于循环使用:for(int redovi = 0; redovi &lt; matrica.length; redovi++) for(int kolone = 0; kolone &lt; matrica[redovi].length; kolone++)
  • 您应该切换到英文名称和控制台输出,因为它是编码的通用语言。虽然通过简单地阅读实现不难了解该算法的功能,但在提问时使用英语会很有帮助;尤其是当代码变得更复杂时。

标签: java arrays matrix 2d


【解决方案1】:

我认为结果是正确的。 这是你的矩阵:

| 0 1 |

| 1 2 |

这就是你所做的:0 * 2 - 1 * 1 好的答案是 = -1。

你想要的代码是:

int i = 1;
for(int redovi = 0; redovi < matrica.length; redovi++)
    for(int kolone = 0; kolone < matrica.length; kolone++)
       matrica[redovi][kolone] = i; 
       ++i;

所以我们会得到一个这样的矩阵:

|1 2|

|3 4|

所以你想要什么的好答案。如果我很好理解的话。

【讨论】:

    【解决方案2】:

    您应该仔细查看写入矩阵的内容。第一个看起来像:

    0 1
    1 2
    

    第二个:

    '1' '2'
    '3' '4'
    

    因此,这两个行列式几乎都按照您的预期计算。您可以将第一个代码中的一行更改为:

    matrix[rows][cols] = (1 + rows*matrix[rows].length + cols);
    

    所以你的矩阵是 1234。
    顺便说一句,使用 char[][] 有效,因为任何 char 都可以表示为一个数字,该数字是字符映射中的索引。

    我还需要解释“('1' + rows * 2 + cols)”的含义

    字符 '1' 在字符图中的第 49 位,'2' 是第 50 位,依此类推。尝试编译这个,例如:

    System.out.println((int)'1');
    

    所以“('1' + rows * 2 + cols)”生成一个矩阵,可以表示为int[][]:

    49 50
    51 52
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-18
      • 2016-09-08
      • 2010-10-13
      • 2017-06-26
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多