2017-02-04 19 views
0

時刻が整数(ei、2.0,4.0,12.0など)であるたびに結果のリストを出力しようとしていますが、結果の最初の行のみが出力されます。 if条件が間違っていますか?または値を印刷する私のコマンド?結果のトラブル印刷テーブル

パッケージa03;

import java.util.Scanner; *

/** * @author カルバン(A00391077)このプログラムは、ユーザが設定したプリセット *で焼成大砲をシミュレートします。 */ パブリッククラスキャノン{

public static final double DELTA_T = 0.001; 
public static final double GRAVITY = 9.81; 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 

    //variables 
    Scanner kbd = new Scanner(System.in); 
    double muzzleVelocity, muzzleHeight, time, height, velocity; 

    //introducing program 
    System.out.println("Cannon Simulation"); 
    System.out.println("-----------------"); 
    System.out.println(); 
    System.out.println("This program simulates firing a cannon straight" 
      + "up into the air. Velocity"); 
    System.out.println("is measured in metres per second squared and" 
      + " height in meteres."); 
    System.out.println(); 
    System.out.println("By Calvin Elliott (A00391077"); 
    System.out.println(); 
    System.out.println("...press enter..."); 
    kbd.nextLine(); 
    System.out.println(); 

    //getting muzzle velocity 
    System.out.println("What is the muzzle velocity of the projectile?"); 
    muzzleVelocity = kbd.nextDouble(); 

    while (muzzleVelocity <= 0) { 
     System.out.println("The velocity must be positive"); 
     System.out.println("What is the muzzle velocity of the projectile?"); 
     muzzleVelocity = kbd.nextDouble(); 
    } 

    //getting muzzle height 
    System.out.println("what height is the muzzle above the ground?"); 
    muzzleHeight = kbd.nextDouble(); 

    while (muzzleHeight <= 0) { 
     System.out.println("The position must be positive"); 
     System.out.println("What height is the muzzle above the ground?"); 
     muzzleHeight = kbd.nextDouble(); 

    } 

    //calculations 
    height = muzzleHeight; 
    velocity = muzzleVelocity; 
    time = 0; 

    System.out.println("TIME HEIGHT VELOCITY"); 
    System.out.println("---- ------ --------"); 

    while (height > 0) { 
     if ((time % 1.0) < DELTA_T) { 
      System.out.printf("%6.2f%10.3f%10.3f\n", time, height, velocity); 

     } 
     height = (height + (velocity * time)); 
     velocity = (velocity - (GRAVITY * time)); 
     time = (time + 0.001); 

    } 

} 

}

+0

時間を試しましたか?%1.0 == 0? – MacStation

答えて

1

一度の絶対量が各反復である、velocity * timeにより高さが増加しています。あなたは、例えばDELTA_T

インクリメント時間で代わりにそれをインクリメントする必要があります。

while (height > 0) { 
    if ((time % 1.0) < DELTA_T) { 
     System.out.printf("%6.2f%10.3f%10.3f\n", time, height, velocity); 

    } 
    height = (height + (velocity * DELTA_T)); 
    velocity = (velocity - (GRAVITY * DELTA_T)); 
    time = (time + DELTA_T); 

} 

また、あなたは速度に追加できるように、一般的に負の値にする必要があり、重力を注目に値するあなたと同じその位置に速度を加えます。

+0

それはすべて今とても大変です。ありがとうございます。 –

+0

@CalElliott、あなたはここで新しいです。良い習慣は、最良の答えを受け入れることです。左のチェックマーク... –