我认为我需要将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;
}
这甚至可能吗?
以下是所有代码
答案 0 :(得分:1)
由于您编辑了问题,我正在编辑此答案。
如果仔细查看返回类型,则其类型为int[][]
,而result
(已返回)的类型为int
。 int
无法投放到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;
}