对于我的作业,我必须编写一个模拟弹射器弹丸发射距离并将其打印到表格的程序。即使在上完课以及其他我看过的第三方资源后,我也对二维数组一无所知。有人可以给我提示和帮助,以帮助我将程序转换为使用二维数组吗?
第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()获取一组值,然后使用循环将它们打印到表格中作为输出
答案 0 :(得分:3)
二维数组只是将数据组织到网格中的一种方法。它是一个数组数组。对于您的情况,对于每个可能的发射角度和速度,您都可以计算出所达到的距离。因此,如果使用二维数组,则可以例如将一个维视为角度,将另一个维视为速度。然后将计算出的特定距离存储在那里。
例如,如果我制作了一个井字游戏,我可能会用3x3阵列代表游戏板。然后我可以通过做类似ICU 60.2
的操作来指示玩家的举动,其中board[row][column] = 'X';
和row
的值在[0..2]范围内。
在您的情况下,您可能不希望使用实际的速度和角度值索引到数组中,因为您将拥有 sparse 数组;也就是说,要存储速度= 50时的距离,您需要一个长度> = 50的数组,并且其中许多数组槽将不使用。此外,您的速度和角度碰巧是整数,但它们可能是带小数部分的浮点值。因此,您不用column
,而要做distances[angle][velocity]
,其中distances[i][j]
和i
分别是您的j
和degrees
表的索引。 / p>