如何从速度和时间不是从位置点计算行驶距离:AndroidJava

问题描述

任何人都可以帮忙。我想根据速度和时间计算旅行中的总距离。当距离不低于最大距离时,我可以得到结果,但当下降到低于最大行驶距离时,最大距离不会增加低于最大距离的行驶距离。当速度降低到最大级别以下时,距离值也在降低,实际上这需要添加到最大距离中。

例如:速度 = 60KM/HR,时间 = 300SEC 然后距离 = 18KM 但是当速度降低到 40KM/HR 并且总时间为 450SEC 则总距离需要添加到 18KM + ( 40 * 150 = 6KM) = 24KM 但当速度降低到 40KM/HR 时,总行驶距离也减少到 18KM 以下。 这里 18KM 是 tripdistMax 的最大值,这个值需要加到变速(最小/最大级别)中。

希望您了解我的问题并寻找解决方案。

下面是代码

double tripdistMax = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    String tripdistance = tripdistanceCalculation();
    tvTripdistance.setText(tripdistance + " KM");
}

private String tripdistanceCalculation() {
    double distance = 0;
    distance = Double.parseDouble(tvTripdistance.getText().toString());
    String duration = time.getText().toString().trim();
    String split[] = duration.split(":");
    if (split.length == 3) {
        String mainSpeedString = tvSpeed.getText().toString().trim();
        int mainSpeed = Integer.parseInt(mainSpeedString);
        int hour = Integer.parseInt(split[0]);
        int minute = Integer.parseInt(split[1]);
        int seconds = Integer.parseInt(split[2]);
        totalSeconds = seconds + (minute * 60) + (hour * 60 * 60);
        if (tripdistMax <= distance) {
            tripdistMax = distance;
        }
        distance = (float) ((mainSpeed * totalSeconds) + tripdistMax) / 1000; //dist=SpeedxTime
        return new DecimalFormat("#.#").format(distance) + "";
    }
    return "";
}

提前致谢。

解决方法

该代码片段中的问题是您在 onCreate 生命周期钩子中调用了一次该函数。这意味着该组件无法记住之前的任何计算,因为它只是在再次调用该函数时才被创建。

您需要一些对象才能在生命周期中存活下来,或者更好的方法来存储以前的值。然后你可以让你的函数读取以前的数据,并添加到其中。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...