簡體   English   中英

BufferedReader或Scanner? (Java)

[英]BufferedReader or Scanner? (Java)

我正在編寫一個程序,該程序讀取大量數據文件並在其中找到特殊點。 為此,我使用的是掃描儀,它可以解析數據(看起來像這樣:)

-0.46368701 0.02136296

-0.46304701 0.03045747

-0.46240701 0.03045747

第一個雙精度數組分配給一個數組,第二個雙精度數組分配給另一個數組。

問題是:程序太慢了。 在這種情況下,我可以很好地使用bufferedReader嗎? 我不知道是否解析它的參數會使程序不足。

謝謝!

順便說一句-該程序的主要方法如下所示:

    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;
}

閱讀此內容: 掃描程序與BufferedReader

總而言之,bufferedreader更快,但這是因為它不會標記化。 就像掃描儀一樣。 現在,如果您想使用bufferedreader,就可以自己對數據進行排序,但這需要更多的代碼,並且不一定會更快。

遇到這些問題時,請務必嘗試一下。 為什么不自己制作一個使用bufferedReader的顯示器呢? 這將是一次體驗。

現在,如果您覺得自己的程序速度太慢了……顯然很慢,那是錯誤的話,那么您需要顯示更多的代碼並進行更多的調試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM