2017-01-14 2 views
-2

Я попытался сделать некоторые вычисления, и что-то не совсем скомпоновано. Я пытаюсь достичь скриншот ниже expectedс использованием JAVA Loop для вычисления математики

, но это то, что я получаю

result

Пожалуйста, мне нужна помощь, это то, что я сделал до сих пор

public class VelocityFall 
{ 
public static void main (String [] a) 
{ 
    Scanner s = new Scanner (System.in); 
    System.out.print("This program prints a table that shows each \nsecond,"  
    + 
    "height from the ground (meters), and the velocity (m/s)\n of a free-falling" + 
    "object from an initial height (metres).\nPlease input the Initial Height H: "); 


    // input/get the value of H from the keyboard 
    double H = s.nextDouble(); 
    // we need to design/output the table by using println with lines and tabs (\t) 

    System.out.println ("------------------------------------------"); 
    System.out.println (" t(s)\t\tHeight(m)\t\tVelocity(m/s)"); 
    System.out.println ("------------------------------------------"); 

    //we now require a for loop 
    for (int t = 0; t<=15; t++) 
    { 
    // we are now going to calculate and output the velocity and decreasing 
    height 
    double velocity = 9.8*t; 
    H = H-(0.5*9.8*Math.pow(t,2)); 
    System.out.println(t + "\t\t" + H + "\t\t" + velocity); 

    } 
    } 
} 
+1

Прошло много времени с тех пор, как я взял кинематику, но разве вы не должны вычислять свой H с начальной высоты, а не с предыдущей высоты? –

+0

Можете ли вы, пожалуйста, изменить свой вопрос, чтобы он был лучше отформатирован, и можете ли вы объяснить, что вы пытаетесь сделать *. «Некоторые вычисления» - это не что-то, это просто свободные слова, какой точный расчет вы пытаетесь сделать, с каким входом, как отличаются результаты и, что немаловажно: где вы изолировали проблему в своем коде и что у вас есть пытался сделать, чтобы исправить это, но закончил тем, что не смог заставить его работать? –

ответ

2

Ваша проблема в том, что вы переназначаете переменную H в строке ниже.

H = H-(0.5*9.8*Math.pow(t,2)); 

Замените эту линию на нижнюю, чтобы получить правильный выход.

double H_new = H-(0.5*9.8*Math.pow(t,2)); 

Не забудьте изменить переменную в вашем println вызова тоже:

System.out.println(t + "\t\t" + H_new + "\t\t" + velocity); 

Таким образом, переменная H остается равным ввода пользователя и ваш расчет не влияет по результатам предыдущего расчета.


Выход:

t(s)  Height(m)  Velocity(m/s) 
------------------------------------------ 
0  1234.56  0.0 
1  1229.6599999999999  9.8 
2  1214.96  19.6 
3  1190.46  29.400000000000002 
4  1156.1599999999999  39.2 
5  1112.06  49.0 
6  1058.1599999999999  58.800000000000004 
7  994.4599999999999  68.60000000000001 
8  920.9599999999999  78.4 
9  837.6599999999999  88.2 
10  744.56  98.0 
11  641.6599999999999  107.80000000000001 
12  528.9599999999999  117.60000000000001 
13  406.4599999999999  127.4 
14  274.15999999999985  137.20000000000002 
15  132.05999999999995  147.0 

Что касается вопроса о повторяющихся цифр, попробуйте использовать DecimalFormat класс.

Смежные вопросы