有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以将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; 
}

这可能吗

以下是所有代码


共 (1) 个答案

  1. # 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;
    }