【问题标题】:Convert Double to ArrayList - Android将 Double 转换为 ArrayList - Android
【发布时间】:2017-01-12 16:57:56
【问题描述】:

我有一个使用 ArrayList 的方法。但我的加速度计值是双倍的。 如何将 Double 转换为 ArrayList,以便在我实现的方法中找到 TotalAccelermeter 的峰值。 提前致谢。 我还有一些其他问题,比如我的 List 在我传递 Double 时是浮动的。

@Override
public final void onSensorChanged(SensorEvent event) {
    // The light sensor returns a single value.
    // Many sensors return 3 values, one for each axis.

    double xx=event.values[0];
    double yy=event.values[1];
    double zz=event.values[2];
    double TotalAccelerate=Math.round(Math.sqrt(Math.pow(xx, 2)
            +Math.pow(yy, 2)
            +Math.pow(zz, 2)));
    sensorText.setText("Total: " + TotalAccelerate);
    Log.i(DEBUG,"Total "+ TotalAccelerate);
    ArrayList<Double> list = new ArrayList<Double>();
    list.toArray(TotalAccelerate);

    findPeaks(TotalAccelerate);
  }


//Find peak values.
    public static ArrayList<Float> findPeaks(List<Float> points) {
    ArrayList<Float> peaks = new ArrayList<Float>();

    if (points == null || points.size() < 1)
        return peaks;

    float x1_n_ref = 0;
    int alpha = 0; //0=down, 1=up.
    int size = points.size();// -1)/100;
    for (int i = 0; i < size; i += 5) {
        float IndexValues = points.get(i);
        if (IndexValues > 140) {
            float delta = x1_n_ref - IndexValues;
            if (delta < 0) {
                x1_n_ref = IndexValues;
                alpha = 1;

            } else if (alpha == 1 && delta > 0) {
                peaks.add(x1_n_ref);

                alpha = 0;
            }

        } else if (alpha == 0) {
            x1_n_ref = IndexValues;
        }
    }

    return peaks;
}

【问题讨论】:

  • 要向列表中添加值,请使用 .add 方法:list.add(TotalAccelerate)

标签: java android arrays arraylist


【解决方案1】:

您从未真正将 TotalAccelerate 值添加到 ArrayList(列表)。您可以使用 ArrayList 的 add 方法来做到这一点:

list.add(TotalAccelerate);

正如您在帖子中提到的,您在调用 findPeaks 方法时遇到了另一个问题。该方法采用ArrayList&lt;Float&gt;,您打算将ArrayList&lt;Double&gt; 传递给它。替换这个:

findPeaks(TotalAccelerate);

用这个:

findPeaks(list);

您需要更改 findPeaks 的方法签名以获取 ArrayList&lt;Double&gt;。在方法内部,如果您需要 Float,则需要将值从 Double 转换为 Float。

希望这能让你走上正轨。

【讨论】:

  • 非常感谢。这很有帮助。我还设置了阈值 if (IndexValues > 9) 而不是 140。我认为我的算法现在运行良好。
【解决方案2】:

你可以试试这个

arrayList.add(Float.valueOf(String.valueOf(your_double_variable)));

【讨论】:

    猜你喜欢
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多