使用2D数组

时间:2013-12-28 18:17:46

标签: java arrays object 2d

我正在尝试使用二维数组创建一种抛射物表。我需要帮助格式化此表的输出,因为我真的不知道如何去做。我也明白在驱动程序类中使用静态方法的方式非常尴尬;我对这方面的建议持开放态度。

/**
 * Driver class
 * 
 * @author Mark Davis
 * @version 12/25/2013
 */
public class Driver
{
    public static final int rows = 8, cols = 8;
    public static void main(String[] args)
    { 
        System.out.println("Test");
        double[][] table = new double[rows][cols];
        Catapult catapult = new Catapult();
        for(int i = 0; (i < rows); i++)
        {
            for(int ii = 0; (ii < cols); ii++)
            {
                table[i][ii] = catapult.calcRange(v(ii), t(i));
                System.out.print(table[i][ii] + " ");
            }
        }
        printResults(table);
    }

    public static double v(int i)
    {
        return 20 + (5*i);
    }

    public static double t(int i)
    {
        return 25.0 + (5.0*i);
    }

    public static void printResults(double[][] a)
    {
        for(int i = 1; (i >= rows); i++)
        {
            for(int ii = 1; (ii >= cols); ii++)
            {
                System.out.print(a[i][ii] + "  ");
            }
            System.out.println();
        }
    }
}



/**
 * Catapult object class
 * 
 * @author Mark Davis
 * @version 12/25/2013
 */
public class Catapult
{
/**
 * Constructor for objects of class Catapult
 */
public static final double g = 9.8;
private static int v;
private static double theta;
public Catapult()
{
}

public double calcRange(double v, double theta)
{
    double l = (Math.pow(v, 2)*Math.sin(Math.toRadians(theta)))/g;
    System.out.println(l);
    return l;
}
public double getTheta()
{
   return theta; 
}
public int getV()
{
    return v;
}
}

2 个答案:

答案 0 :(得分:0)

只需快速浏览一下,我就注意到您使用的是“i&gt; = rows”而不是“i&lt; rows”。 现在你说“如果我比行大,那就加1”,这没什么意义。

尝试使用这些循环(也许可以解释实际问题是什么)

 for(int i = 0; (i < rows); i++)
    {
        for(int ii = 0; (ii < cols); ii++)
        {
            Catapult catapult = new Catapult(v(ii), t(i));
            table[i][ii] = catapult.calcRange();
            System.out.print(table[i][ii] + " ");
        }
    }

答案 1 :(得分:0)

在做算法之前,你应该真正理解你的逻辑。因此,请检查您尝试执行的操作的总体逻辑(循环,对象的创建过程等)。

另外,要格式化表格(我想通过使用print来表示它是一个简单的输出),因此您可以使用Formatter()格式化输出。

小片段

Formatter fmf = new Formatter();
System.out.print(fmf.format("2%d",10));

格式()中的所有结构都是这样的:

%[argument_index$][flags][width][.precision]conversion

有关您的更多信息find here