我正在編寫一個程序,它讀取大量數據文件並在其中找到特殊點。 對於這一點,我使用的掃描儀,它可以分析數據(這看起來像:)BufferedReader或掃描儀? (Java)
-0.46368701 0.02136296
-0.46304701 0.03045747
-0.46240701 0.03045747
第一雙去一個陣列和第二到另一個。
對於這個問題:程序太慢了。在這種情況下,我可以很好地使用bufferedReader嗎?我不知道解析它的參數是否會導致程序不足。
謝謝!
BTW - 該方案的主要方法看起來像:
private void init() throws IOException{
try {
scan = new Scanner(file);
} catch (FileNotFoundException e) {
System.out.println(e.toString());
e.printStackTrace();
}
lines = countLines(file);
value = new double[lines];
time = new double[lines];
vMinValue = new Vector<Double>();
vMinTime = new Vector<Double>();
}
//fill in time[] and value[] arrays
private void readFile(){
count=0;
System.out.println("Reading file...\n");
//Get to the start of the info -=CORE=-
while(scan.hasNext()){
if(scan.next().equals("(V)")){
System.out.println("Reading only 'Channel A' Values \n ");
break;
}
}
while(scan.hasNext()){
time[count] = scan.nextDouble();
value[count] = scan.nextDouble();
count++;
if(value[count]==Double.NEGATIVE_INFINITY) count--;
}
scan.close();
System.out.println("Input File Has Been Closed \n");
}
private void addMins(double[] a,int range){
for(int i=0;i<a.length;i++){
if(isMin(i,range)){
if((vMinValue.isEmpty() || vMinValue.get(vMinValue.size()-1)!=a[i])){ // provides only one minimum point
vMinValue.add((Double)value[i]);
vMinTime.add((Double)time[i]);
managMin.add(value[i]);
}
}
}
private boolean isMin(int i,int range){
boolean result = true;
for(int j=-range;j<=range;j++){
if(j==0) continue;
if(i+j<0 || i+j>value.length-1) continue;
if(value[i]>value[i+j]) return false;
}
return result;
}
什麼是你的代碼是什麼樣子? – Kayaman
我通常使用BufferedReader。但認爲可能還有其他原因。只有這麼多的信息才能導致解決方案。你是否爲單個值創建單獨的數組? – Kartic
顯示你的代碼會很好。 – JonasCz