Java 使用二维阵列
我试图用一个二维数组创建一个抛射表。我需要帮助格式化这个表的输出,因为我真的不知道该怎么做。我也明白,我在驱动程序类中使用静态方法的方式非常笨拙;我愿意接受有关这方面的建议Java 使用二维阵列,java,arrays,object,2d,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 vo
/**
* 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;
}
}
/**
*驾驶员等级
*
*@作者马克·戴维斯
*@version 12/25/2013
*/
公务舱司机
{
公共静态final int rows=8,cols=8;
公共静态void main(字符串[]args)
{
系统输出打印(“测试”);
double[]table=新的double[行][cols];
弹射器弹射器=新弹射器();
for(int i=0;(i=行);i++)
{
for(int ii=1;(ii>=cols);ii++)
{
系统输出打印(a[i][ii]+“”);
}
System.out.println();
}
}
}
/**
*弹射器对象类
*
*@作者马克·戴维斯
*@version 12/25/2013
*/
公共级弹射器
{
/**
*Catapult类对象的构造函数
*/
公共静态最终双g=9.8;
专用静态INTV;
私有静态双θ;
公共弹射器()
{
}
公共双刻度(双v,双θ)
{
双l=(数学功率(v,2)*数学正弦(数学托拉迪安(θ))/g;
系统输出打印LN(l);
返回l;
}
公共双getheta()
{
返回θ;
}
公共int getV()
{
返回v;
}
}
快速浏览一下,我注意到您使用的是“I>=rows”而不是“Ifor(int i=0;(i
在做算法之前,你应该真正理解你的逻辑。因此,请检查您尝试执行的操作的总体逻辑(循环、对象的创建过程等等)
另外,要格式化一个表(我认为它是一个使用print的简单输出),您可以使用Formatter()
格式化输出
小片段
Formatter fmf = new Formatter();
System.out.print(fmf.format("2%d",10));
format()中的所有结构如下所示:
%[argument_index$][flags][width][.precision]转换
关于它的更多信息你请叫你变量
i
和j
,你会对我的这些感到生气的。谢谢你,我按照你的建议做了,并做了一些其他的小改进。
Formatter fmf = new Formatter();
System.out.print(fmf.format("2%d",10));