0
実行しても思った結果になりません
Java初心者です。
テキストファイルから一行ずつDouble配列に格納し、一つの注目した要素の前後約100のどの要素よりも大きい値を見つけるプログラムを作りたいです。http://chaos-fractal.blogspot.com/2012/09/java-1.htmlを参考にして、テキストファイルからString配列に格納することはできています。
その後Double型に変換し、前後100程度の配列を作ってその最大値を求め、比較し、大きければ1.0、そうでなければ0.0を再代入しています。
詳しいことは以下のソースコードをご覧ください。
コンパイルエラーなどなく、実行はできますが結果は元々の数値がでてしまい、0.0や1.0は出てきません。
ソースコード
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
public class maxwhere
{
public static void main(String[] args)
{
//テキストファイルからString型配列に一行ずつ格納
String[] strarray = new String[60000];
int i = 0;
try
{
File file = new File("sampledata.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String str= null;
i=0;
while((str = br.readLine()) != null)
{
System.out.println(str);
strarray[i]=str;
i = i +1;
}
br.close();
}
catch(FileNotFoundException e)
{
System.out.println(e);
}
catch(IOException e)
{
System.out.println(e);
}
//String型配列をDouble型配列に変換
double[] gain = new double[strarray.length];
for (int i1 = 0;i1 < strarray.length; i1++)
{
gain[i1] = Double.parseDouble(strarray[i1]);
}
//ピーク検出
for (int i1 = 0; i1 < gain.length; i1++)
{
//前後の配列
double[] firstGains = Arrays.copyOfRange(gain,i1, i1 + 100);
double[] secondGains = Arrays.copyOfRange(gain, i+101, i1+200);
//前後の配列の最大値
double firstMax = firstGains [0];
double secondMax = secondGains [0];
for (int i11 = 1; i11 < firstGains.length; i11++)
{
firstMax = firstGains[i11];
}
for (int i11 = 1; i11 < secondGains.length; i11++)
{
secondMax = secondGains[i11];
}
//比較
if(gain[i1 + 100] > firstMax && gain[i1 + 100] > secondMax && gain[i1 + 100] > 0.15)
{
gain[i] = 1.0;
}
else {
gain[i] = 0.0;
}
}
//出力
for (int i1 = 0; i < gain.length; i++) {
System.out.println(gain[i1]);
}
}
}
面倒くさい質問ですが、なにとぞご教授お願い致します。