2013-08-08 4 views
0

"ParticleDropClass"라는 "main"클래스를 생성해야합니다. 이 클래스의 목적은 거대한 몸체가 점성이있는 액체가 들어있는 용기의 바닥으로 떨어지는 데 걸리는 시간을 계산하는 것입니다.프로그램 실행 후 출력이 없습니다

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

출력이 실제로 함수에 있다고 생각하지 않습니다. –

+0

또한, 그 밖의 모든 답변을 본 후에도 부동 소수점 문제로 인해 물릴 수 있습니다. –

답변

2

z 값이 절대로 변경되지 않으므로 drop에 무한 루프가 있습니다. 사이드 노트에서 들여 쓰기 및 줄 바꿈을 수정하는 것이 좋습니다. Eclipse와 같은 IDE를 사용하여 쉽게 수정할 수 있습니다. 생성자에서,

z = z1; 
t = t1; 
v = v1; 

과 :

나는 당신이 쓰는 의미 생각

m = x; 
d = y; 

왼쪽 피연산자가 오른쪽 피연산자의 값을 가져옵니다.

+0

)에서 drop (int) 함수를 호출합니다. "z ++"가 작동합니까? –

+0

@RobinPhilip 제 편집을보세요. 그것은 일을 정리할 수 있습니다. 값을 잘못된 방식으로 지정하고 있습니다. – keyser

+0

아아 쿨, 고마워요 –

1
 public ParticleDropClass (double x, double y){ 
     x=m; 
     y=d; 
     } 

이 명백한 문제입니다. 이것은 아무것도하지 않고 x와 y를 0으로 만듭니다. 더 많을 수도 있습니다.

다른 사람이 드롭 무한 루프가있어, 이미 지적한 것처럼 편집

. 대신, 당신은 아무것도하지 않는 xy를 설정하고, md 설정되지 않은, 생성자에서

:

+0

b.drop (0.5)는 메인 ( –

1

두 가지 문제가 있습니다.

또한 while 루프에서는 t, vz의 값을 업데이트하지 않습니다. 대신 임시 값을 원본으로 다시 설정하면됩니다.

1
while (z>= 0.0) 

이것은 문제입니다. while 루프는 변수 z를 절대로 변경하지 않으므로 루프가 끝나지 않고 print 문에 도달하지 않습니다.

0

무한 루프에있는 것처럼 보입니다. z (h로 10으로 설정)는 항상 0.0보다 크거나 같습니다. 더 나은 들여 쓰기를 사용해야하며 나는 학생임을 확신하므로 더 의미있는 식별자를 사용하는 것에 대해 생각해보십시오.

관련 문제