Java中的二维数组

时间:2019-03-16 20:58:51

标签: java arrays multidimensional-array

对于我的作业,我必须编写一个模拟弹射器弹丸发射距离并将其打印到表格的程序。即使在上完课以及其他我看过的第三方资源后,我也对二维数组一无所知。有人可以给我提示和帮助,以帮助我将程序转换为使用二维数组吗?

第1类:测试人员类

public class CatapultTester{

    public static void main(String[] args){

        double [] velocity = {20,25,30,35,40,45,50};
        double [] degrees = {20,25,30,35,40,45,50};


        Catapult vars = new Catapult(velocity,degrees);

        double [] distance = vars.calcDistance();

        System.out.println("              Projectile Distance (feet)              ");
        System.out.printf("%s", "MPH");
        for (int i = 0; i < degrees.length; i++){
            System.out.printf("%5.0f %1s",degrees[i], "deg");
        }

        System.out.print("\n");
        System.out.println("==================================================================");

        for(int i = 0; i < distance.length; i++)
        {
            System.out.printf( "%2.0f ", velocity[i]);
            for(int f = 0; f < distance.length; f++)
            {

                System.out.printf("%8.1f ",  distance[i]);

            } 
            System.out.printf("\n");
        }
    }
}

第2类:

public class Catapult extends CatapultTester
{
    double [] velocity;
    double [] degrees;

    Catapult(double[] v, double[] d){
       velocity = v;
       degrees = d;
    }

    public double [] calcDistance(){

        double [] total = {0,0,0,0,0,0,0};

        for (int i = 0; i < degrees.length; i++){

            total[i] = (Math.pow(velocity[i]/2.237, 2) * Math.sin(2 * Math.toRadians(degrees[i]))/9.8);

        }

        return total;
    }
}

总的来说,我需要采用速度和角度数组并将它们组合成一个二维数组,并且它们使用方法calcDistance()获取一组值,然后使用循环将它们打印到表格中作为输出

1 个答案:

答案 0 :(得分:3)

二维数组只是将数据组织到网格中的一种方法。它是一个数组数组。对于您的情况,对于每个可能的发射角度和速度,您都可以计算出所达到的距离。因此,如果使用二维数组,则可以例如将一个维视为角度,将另一个维视为速度。然后将计算出的特定距离存储在那里。

例如,如果我制作了一个井字游戏,我可能会用3x3阵列代表游戏板。然后我可以通过做类似ICU 60.2的操作来指示玩家的举动,其中board[row][column] = 'X';row的值在[0..2]范围内。

在您的情况下,您可能不希望使用实际的速度和角度值索引到数组中,因为您将拥有 sparse 数组;也就是说,要存储速度= 50时的距离,您需要一个长度> = 50的数组,并且其中许多数组槽将不使用。此外,您的速度和角度碰巧是整数,但它们可能是带小数部分的浮点值。因此,您不用column,而要做distances[angle][velocity],其中distances[i][j]i分别是您的jdegrees表的索引。 / p>