是否可以将int [] []转换为int?

时间:2014-02-03 00:41:48

标签: java

我认为我需要将int [] []转换为int以使我的代码工作,但我不确定。那有可能吗?

例如:

public static int[][] multiplyByScalar(int scalar, int[][] matrix)
{
 if (!atLeastOneByOne(matrix))
              throw new IllegalArgumentException();
int result=0;
if(matrix.length==matrix[0].length)
{
 for(int x=0;x<matrix.length;x++)
{
  for(int y=0;y<matrix[x].length;y++)
  {
    result=scalar*matrix[x][y];
  }
}
}
return result; 
}

这甚至可能吗?

以下是所有代码

1 个答案:

答案 0 :(得分:1)

由于您编辑了问题,我正在编辑此答案。

如果仔细查看返回类型,则其类型为int[][],而result(已返回)的类型为intint无法投放到int[][]

返回类型应为int,如下所示:

public static int multiplyByScalar(int scalar, int[][] matrix)
{
 if (!atLeastOneByOne(matrix))
              throw new IllegalArgumentException();
int result=0;
if(matrix.length==matrix[0].length)
{
 for(int x=0;x<matrix.length;x++)
{
  for(int y=0;y<matrix[x].length;y++)
  {
    result=scalar*matrix[x][y];
  }
}
}
return result; 
}

现在,看一下你的方法的命名意味着什么,你想要一个矩阵乘以一个标量,根据定义,它会返回一个矩阵。在这种情况下,您需要将result定义为int[][],当您执行实际计算时,请在同一索引上执行此操作,如下所示:

public static int[][] multiplyByScalar(int scalar, int[][] matrix) {
    int[][] result = new int[matrix.length][matrix[0].length];
    if (matrix.length == matrix[0].length) {
        for (int x = 0; x < matrix.length; x++) {
            for (int y = 0; y < matrix[x].length; y++) {
                result[x][y] = scalar * matrix[x][y];
            }
        }
    }
    return result;
}