【问题标题】:Java: Method always returns same resultJava:方法总是返回相同的结果
【发布时间】:2017-03-30 11:56:43
【问题描述】:

我应该为高中的编程课编写一个程序。程序要求用户输入以秒为单位的时间,并使用常用公式 d = 1/2 * g * t ^ 2 计算下落距离。D 是距离(结果),g 等于 9.8,t 是时间用户输入。由于某种原因,我们应该调用该方法 10 次。这是我的问题:无论用户输入的时间是什么,该方法总是返回相同的结果(第一次迭代中为 4.9)。我做错了什么?

import javax.swing.JOptionPane;
public class fallingDistance {

    public static void main(String[] args){

        String input;
        double time;

        input = JOptionPane.showInputDialog("Enter the time in seconds: ");
        time = Double.parseDouble(input);
        System.out.println(time);
        for(int x=1; x<=10; x++){
            JOptionPane.showMessageDialog(null, "The falling distance is: " + calculate(x) + "m.");
        }

    }

    public static double calculate(double time){
        double g = 9.8, a=0.5;
        double distance = (a*g) * (Math.pow(time, 2.0));
        JOptionPane.showMessageDialog(null, distance);
        return (distance);
    }
}

【问题讨论】:

  • 您要求时间,但您没有将其传递给计算方法。除了打印它,你什么也不用做。你确实从循环中传递了 x 值,所以它总是 1-10 秒。
  • 因为这是一个编程课,我希望你不介意你对你的代码发表评论。您应该将 for 循环更改为 for(int x=0; x&lt;10; x++)。您的循环没有错,但更常见的是您的迭代器从 0 开始。

标签: java loops methods distance


【解决方案1】:

您正在将x 传递给计算方法。尝试传入time。

【讨论】:

  • 谢谢。那行得通,但现在程序每次循环迭代时都会给我相同的结果。我该如何解决?
  • 每次迭代应该有什么区别?
  • 您是否应该将行for(int x=1; x&lt;=10; x++){ 更改为for(int x=0; x&lt;10; x++){,然后将calculate(time) 更改为calculate(time + x)?这就是你要找的吗?
  • 非常感谢!我刚上课就试了一下。非常适合我。
  • @HenrikDierker 如果这是您正在寻找的答案,请接受答案并将其标记为正确。
【解决方案2】:

为什么说返回(距离)?我认为您必须删除括号。让我知道这是否有帮助。

【讨论】:

  • 感谢您的回答,但没有改变任何东西。
  • @Henrik Dierker,在将其分配到 JOptionPane 之前尝试 calculate(),例如 for(.......){double out = calculate(time); JOptionPane.......("...." + out + "m");}
猜你喜欢
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
相关资源
最近更新 更多