Math.pow 类型不匹配且运算符未定义 - Java

Type mismatch for Math.pow and operator undefinded - Java

我正在做一项作业,根据速度和角度计算轨迹,我在计算中遇到了几个错误,我不知道如何修复。该程序的工作原理如下:使用 nextInt() 方法将文本文件中的值读入 2 个 int 数组。这些数组被传递给一个 class 的 calculateTrajectory 方法,并被组合成一个二维数组。这些都是 int 数组。在 calculateTrajectory 中,组合成二维数组后,我计算轨迹,但在我的计算中出现错误。

我遇到的错误的描述:

当我循环遍历二维数组进行计算时,在我的速度值上使用 Math.pow 方法时出现一个错误。该错误显示 "the method pow(double, double) in the type Math is not applicable for the arguments (int[], int)"。建议是将速度类型更改为加倍。我需要将值转换为双精度值吗?

当我尝试在 toRadians 中将角度乘以 2 时,出现了计算中的第二个错误。我在这里得到的错误是 "The operator * is undefined for the argument type(s) int, int[]"。这里没有快速修复建议。我查了这个错误,我看到的任何答案都非常混乱。

我试过将我的阵列变成双阵列,但没有用。我想知道在填充 2D 数组时是否可以将 int 数组的值转换为双精度数,是否可以解决问题。

public void calculateTrajectory(int[][] speed, int[][] angles)
    {
        //convert speed and angles arrays into one 2D array
        for(int row = 0; row < speed.length; row++)
        {
            for(int col = 0; col < angles.length; col++)
            {
                combined[row] = speed[row];
                combined[col] = angles[col];
            }
        }

        //calculate the trajectory from 2D array
        for(int r = 0; r < speed.length; r++)
        {
            for(int c = 0; c < angles.length; c++)
            {
                trajectory = (Math.pow(speed[r], 2)) * 
                    Math.sin(Math.toRadians(2 * angles[c])) / 32.1713;
            trajectoryArray[r] = trajectory;
            }
        }
    }

我知道,根据方程式,我会得到双倍的计算结果。我设置的用于获取计算结果的变量是双精度变量。我希望能够 运行 计算没有错误,同时循环并用结果填充我的 trajectoryArray。

speed[r]是一个数组; speed[<something>][<something>] 是一个数字(在本例中为 int,但它会自动转换为 double)。您不能使用 Math.pow 获取数组的幂。第二个问题是一样的,只是 angles 数组。在这两种情况下,您都需要指定 two 索引。

对于问题

  1. Math.pow(double, double) 有两个双参数。但是这里的 speed[r] 是一个数组,因为 speed 是一个二维数组,而 2 是一个整数。你应该使用 speed[r][c]。对于 int 2 你可以说 2.0.

  2. Math.toRadians(double) 需要一个 double 值但是 2 * angles[c] 不是一个 double 值并且不能计算因为 angles[c] 是一个数组,因为 angles 是一个二维数组。你可以做 2.0 * angles[r][c]