【问题标题】:My code does exactly what it has to do, but i have no idea why我的代码正是它必须做的,但我不知道为什么
【发布时间】:2018-11-30 17:43:55
【问题描述】:

应该使用线性方程计算发射的弹丸相对于时间(100ms 的步长)的坐标,并输出线性数字,但如果我用 CalcMe.com(数学工具)绘制这个方程,它会生成抛物线图

InVel = Double.parseDouble(jTextField1.getText());
    g = Double.parseDouble(jTextField8.getText());

    y = 1;

    while(y >= -1) {
        t += 100;
        x = InVel * TimeUnit.MILLISECONDS.toSeconds(t) * Math.cos(45);
        y = InVel * TimeUnit.MILLISECONDS.toSeconds(t) * Math.sin(45) - (1 / 2) * g * Math.pow(TimeUnit.MILLISECONDS.toSeconds(t), 2);
        //System.out.print(Double.toString(x));
        //System.out.printf(" ");
        System.out.print(Double.toString(y));
        System.out.printf("%n");
    }

    jTextField6.setText(Double.toString(x));

代码在java中

g 是常数 (9.8) 并且 invel 是由用户给出的,所以它也是常数 g 是重力和 invel 弹丸的初始速度 等式是:x=invel*time*cos(45)y=invel*time*sin(45)-(1/2)*g*t^2

谁能帮帮我?

【问题讨论】:

  • 您的问题标题令人困惑,您不知道为什么what,为什么它会像您想要的那样工作,或者为什么它会做其他事情?无论如何1 / 2 = 0 因为它是整数除法。
  • 不,所有变量都是双倍的,所以 0.5
  • 12 是整数,因此 1/2 为 0 - 进一步计算是否为 double 并不重要
  • 表达式 (1 / 2) 仍然是整数,所以结果会像 Pshemo 所说的那样为 0。
  • 为了消除混淆,您可以通过添加 Pshemo 1.0 中所述的小数或像 1d 那样附加一个“d”来声明双重文字。要么给你一个价值'1'的双倍

标签: java math plot coordinates projectile


【解决方案1】:

您的毫秒到秒值转换方法TimeUnit.MILLISECONDS.toSeconds(t)是主要事实。它返回的 long 值是你想要的两倍。请看下面的代码。可能是你的答案。只需将 hard-coded 值替换为您的 jTextField

public static void main(String[] args) {
    double InVel = Double.parseDouble("10.555");
    double g = Double.parseDouble("9.8");

    double y = 1;
    double x=0;
    double t=0;
    while(y >= -1) {
        t += 100;
        double timeInSeconds =  (t / (double)1000) % (double)60;
        x = InVel * timeInSeconds * Math.cos(45);
        y = InVel * timeInSeconds * Math.sin(45) - ((double) 1 / (double) 2) * g * Math.pow(timeInSeconds, 2);
        //System.out.print(Double.toString(x));
        //System.out.printf(" ");
        System.out.println("X = " + x + " Y = " + Double.toString(y));
        System.out.printf("%n");
    }
}

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2012-05-19
    • 2022-11-04
    • 2022-11-17
    相关资源
    最近更新 更多