所以我尝试调用包含数组峰值列表的方法。
但我正在从我的文本文件 StringBuilder
中将数组读取为 String
。我应该做什么来调用该方法来对该数组执行该函数,然后烘烤结果或 printf。请注意,我的数组具有等间距一维的字符串数字。
String Adata = String.valueOf(stringBuilder);
// find the peaks
String dataArray[] = Adata.split(" ");
List aa = dataArray;
List a = findPeaks(aa); // I can't convert to List.
DataAlert alert = new DataAlert();
alert.show(getFragmentManager(), "DataAlert");
Peaks_value.setText(String.valueOf(a));
}
});
}//end OnCreate().
public static List<Integer> findPeaks(List<Float> points)
{
ArrayList<Integer> peaks = new ArrayList<Integer>();
float x1_n_ref = 0;
int alpha = 0;
for (int i = 0; i < points.size(); i++) {
if (x1_n_ref - points.get(i) < 0) {
x1_n_ref = points.get(i);
alpha = 1;
} else if (alpha == 1 && x1_n_ref - points.get(i) > 0) {
peaks.add(i);
alpha = 0;
}
x1_n_ref = 0;
}
return peaks;
}
最佳答案
您需要在数据类型之间正确转换,并确保通用参数匹配:
//I think using toString makes it easier to read
String Adata = stringBuilder.toString();
String dataArray[] = Adata.split(" ");
//include generic parameter
List<Float> aa = new ArrayList<Float>();
//Convert String[] into List<Float>
for(int i=0;i<dataArray.length;i++){
//take String i from dataArray, convert it to a float with Float.parseFloat, then add it to your list
aa.add(Float.parseFloat(dataArray[i]));
}
//again, include the generic parameter
List<Integer> a = findPeaks(aa);
DataAlert alert = new DataAlert();
alert.show(getFragmentManager(), "DataAlert");
//again, using toString
Peaks_value.setText(a.toString());
}
});
}
public static List<Integer> findPeaks(List<Float> points)
{
ArrayList<Integer> peaks = new ArrayList<Integer>();
float x1_n_ref = 0;
int alpha = 0;
for (int i = 0; i < points.size(); i++) {
if (x1_n_ref - points.get(i) < 0) {
x1_n_ref = points.get(i);
alpha = 1;
} else if (alpha == 1 && x1_n_ref - points.get(i) > 0) {
peaks.add(i);
alpha = 0;
}
x1_n_ref = 0;
}
return peaks;
}
关于java - 列表到字符串。安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34621782/