我需要创建一个名为“ParticleDropClass”的“主”类。本课程的目的是计算一个巨大的物体落到含有粘性液体的容器底部所需的时间。
public class ParticleDropClass {
double m;
double d;
double z;
double t;
double v;
public ParticleDropClass (double x, double y){x=m;y=d;} // creating a constructor
public final double g= 9.81 ;//constants
public final double h = 10.0;//constants
public void drop(double dt ){
t=0;v=0;
double z=h;// intial height at 10m
while ( z>= 0.0){
double a= (d*v*v)/m-g;// formula for body's acceleration
double dv= a*dt;
double dz=v*dt ;
double z1= z+dz;
double v1= v+dv;
double t1=t+dt;
t1=t;
v1=v;
z1=z;
}
System.out.println("t ="+t +"dt="+t+"s"+ "\n"+"final v="+v+"m/s" );
}
public static void main(String[] args) {
double m=4.3;double d=2.5 ;
ParticleDropClass b= new ParticleDropClass(m,d);// for an object of mass 4.3 and 2.5 , at height 0.5 I create a object .
b.drop(0.5);
}
}
但我运行上面的代码没有任何反应,为什么?
答案 0 :(得分:2)
drop
中有一个无限循环,因为z
的值永远不会改变。在侧面说明我建议你修复你的缩进和换行。它可以使用Eclipse等IDE轻松修复。
我想你打算写:
z = z1;
t = t1;
v = v1;
并且,在construtor中:
m = x;
d = y;
左操作数获取右操作数的值。
答案 1 :(得分:1)
public ParticleDropClass (double x, double y){
x=m;
y=d;
}
这是一个明显的问题。这只做x和y 0.可能还有更多。
修改的
正如其他人已经指出的那样,下降中存在无限循环。
答案 2 :(得分:1)
有两个问题:
在构造函数中,您没有设置m
和d
,而是设置x
和y
,它们什么都不做。
此外,在您的while循环中,您不会更新t
,v
和z
的值。相反,您只需将临时值设置回原始值。
答案 3 :(得分:1)
while ( z>= 0.0)
这就是问题所在。你的while循环永远不会改变变量z,所以循环永远不会结束,永远不会到达你的打印语句。
答案 4 :(得分:0)
看起来你处于无限循环中。你z(你将其设置为h,即10)总是大于或等于0.0。您应该使用更好的缩进,因为我非常确定您是学生,请考虑使用更有意义的标识符。