如何从两个一维数组创建二维数组并执行计算

时间:2014-01-05 00:45:57

标签: java arrays multidimensional-array

我有一个关于如何从两个一维数组创建二维数组并执行计算的问题。就我而言,当我尝试使用两个for循环从两个一维数组创建二维数组时,我编写的程序有两个语法错误。第一个for循环有一个语法错误,说non-static variable angle cannot be referenced from a static context,第二个for循环有一个语法错误,说package velocity does not exist,但我已经在上面定义了它。我怎样才能解决这个问题?任何帮助将不胜感激。以下是我的代码:

public class Catapult {

int velociy[] = {45, 67, 77, 89, 90, 56, 100};
double angle[] = {Math.toRadians(10), Math.toRadians(20), Math.toRadians(25), 
Math.toRadians(30), Math.toRadians(35), Math.toRadians(40)};

public static void calculations(int velocity[], int angle[]){
    for(int i = 0; i < velocity.length; i++){
        double answer = velocity[i] * Math.sin(angle[i]) / 9.8;
    }
}

public static void display(){
    for(int i = 0; i < angle.length; i++){
        for(int j = 0; j < velocity.length; j++){
            System.out.println(// how can I make a two dimensional array 
                    // from two one dimensional arrays?
            );
        }
        System.out.println();
    }
}
}

3 个答案:

答案 0 :(得分:1)

我注意到你的速度数组和你的角度数组的长度不一样。所以我假设你实际上是在尝试将每个速度与计算中的每个角度结合起来,以得到2D结果;而不是仅仅成对地组合它们。我就是这样做的。

public static void main(String[] args) {
    int[] velocity = {45, 67, 77, 89, 90, 56, 100};
    double[] angle = {Math.toRadians(10), Math.toRadians(20), Math.toRadians(25), 
            Math.toRadians(30), Math.toRadians(35), Math.toRadians(40)};

    double[][] result = new double[velocity.length][angle.length];

    for (int i = 0; i < velocity.length; i++ ) {
        for (int j = 0; j < angle.length; j++ ) {
            result[i][j] = velocity[i] * Math.sin(angle[j]) / 9.8;
        }
    }

    System.out.println(Arrays.toString(result));
}

答案 1 :(得分:0)

试试这个:

    Integer velocity[] = {45, 67, 77, 89, 90, 56, 100};
    Double angle[] = {Math.toRadians(10), Math.toRadians(20), Math.toRadians(25), Math.toRadians(30), Math.toRadians(35), Math.toRadians(40)};
    Object[][] twoDimensionalArray = {velocity, angle};

答案 2 :(得分:0)

  

第一个for循环有一个语法错误,表示非静态变量角度   无法从静态上下文引用

您必须将angle-Array定义为静态:

static double angle[] = {Math.toRadians(10), Math.toRadians(20), Math.toRadians(25), 
Math.toRadians(30), Math.toRadians(35), Math.toRadians(40)};