Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不同峰值之间的峰值_Android_Android Intent_Android Activity - Fatal编程技术网

Android 不同峰值之间的峰值

Android 不同峰值之间的峰值,android,android-intent,android-activity,Android,Android Intent,Android Activity,我试图得到这两个峰值,一旦我从我的文本文件读取。我已经定义了两个字符串来比较两个值以找到峰值,但我认为我的if(y_0>MP)语句在找到两个峰值方面不正确。我该怎么办 //Read data. Recall = (Button) findViewById(R.id.Recall); Recall.setOnClickListener(new View.OnClickListener() { StringBuilder stringBuilder;

我试图得到这两个峰值,一旦我从我的文本文件读取。我已经定义了两个字符串来比较两个值以找到峰值,但我认为我的if(y_0>MP)语句在找到两个峰值方面不正确。我该怎么办

     //Read data.
      Recall = (Button) findViewById(R.id.Recall);
      Recall.setOnClickListener(new View.OnClickListener() {
        StringBuilder stringBuilder;

        @Override
        public void onClick(View v) {
            //readTextFile(this, R.raw.books);
            stringBuilder = new StringBuilder();
            String line;
            try {
                FileInputStream fIn = new FileInputStream(file);
                BufferedReader bufferedreader = new BufferedReader(new   
                InputStreamReader(fIn));
                while ((line = bufferedreader.readLine()) != null) {
                    stringBuilder.append(line);
                    stringBuilder.append(" ");
                    stringBuilder.length();

                }
                bufferedreader.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            String a;
            a = String.valueOf(stringBuilder);
            String dataArray[];
            int t;
            dataArray = a.split(" ");
            int MP = 0;
            for (t = 1; t < dataArray.length - 1; t++) {
                float y_0 = Float.valueOf(dataArray[t]);
                float y_1 = Float.valueOf(dataArray[t + 1]);
                float y_2 = Float.valueOf(dataArray[t - 1]);

                float left = y_0 - y_2;
                float right = y_1 - y_0;

                if (left > 0 && right < 0) {
                    if (y_0 > MP) {
                        MP = (int) y_0;
                    } else {
                        MP = (int) y_0;
                    }
                    Toast.makeText(getApplicationContext(), "Number of peaks  
                    founds\n: " + MP, Toast.LENGTH_SHORT).show();

                }
            }
            DataAlert alert = new DataAlert();
            alert.show(getFragmentManager(), "DataAlert");


        }
    });
//读取数据。
调用=(按钮)findViewById(R.id.Recall);
Recall.setOnClickListener(新视图.OnClickListener(){
StringBuilder StringBuilder;
@凌驾
公共void onClick(视图v){
//readTextFile(this,R.raw.books);
stringBuilder=新的stringBuilder();
弦线;
试一试{
FileInputStream fIn=新的FileInputStream(文件);
BufferedReader BufferedReader=新的BufferedReader(新的
输入流阅读器(fIn);
而((line=bufferedreader.readLine())!=null){
stringBuilder.append(行);
stringBuilder.append(“”);
stringBuilder.length();
}
bufferedreader.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
字符串a;
a=字符串.valueOf(stringBuilder);
字符串数据数组[];
int t;
dataArray=a.split(“”);
int-MP=0;
对于(t=1;t0和右<0){
如果(y_0>MP){
MP=(int)y_0;
}否则{
MP=(int)y_0;
}
Toast.makeText(getApplicationContext(),“峰值数
founds\n:“+MP,Toast.LENGTH\u SHORT.show();
}
}
DataAlert alert=新的DataAlert();
显示(getFragmentManager(),“DataAlert”);
}
});

您对if(y\u 0>MP)行的怀疑是正确的。如果您想制作一个祝酒词,显示找到的峰值数量,那么您需要保留一个峰值列表,或者一个计数器,并在每次发现峰值时将其添加到列表中。然后,在for循环完成对峰的搜索之后,您可以举杯庆祝,说出找到了多少个峰

List<Integer> peaks = new ArrayList<>();
for (t = 1; t < dataArray.length - 1; t++) {
    float y_0 = Float.valueOf(dataArray[t]);
    float y_1 = Float.valueOf(dataArray[t + 1]);
    float y_2 = Float.valueOf(dataArray[t - 1]);

    float left = y_0 - y_2;
    float right = y_1 - y_0;

    if (left > 0 && right < 0)
        peaks.add(t);
}

Toast.makeText(getApplicationContext(), "Number of peaks founds\n: " + peaks.size(), Toast.LENGTH_SHORT).show();

for (Integer peak : peaks) {
    float value = Float.valueOf(dataArray[peak]);
    Toast.makeText(getApplicationContext(), "Peak of height " + value + " found at index " + peak, Toast.LENGTH_SHORT).show();
}
相当于:

MP = (int) y_0;

无论if语句是真是假,您都可以分配
MP=(int)y_0

我明天早上会回答这个问题。我现在正在打电话,所以编写和格式化代码示例有点尴尬。你好,安德鲁。你能在这方面帮助我吗。
MP = (int) y_0;