2016-11-06 75 views
0

我有一個I/O java文件,一個包含main,.txt的SDive文件,在它和一個Sorted .txt中按照遞增順序返回隨機單詞。它打印Sorted中的所有單詞,但沒有排序。我需要從java中讀取.txt文件並將排序的上下文寫入不同的.txt文件中

//Sort.java 
// required for input 
import java.io.FileReader; 
import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
// required for output 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 

class Sort{ 

    private String[] tArr = new String[100]; 

     public void swap(int j) {  

      String temp = tArr[j-1]; 
      tArr[j-1] = tArr[j]; 
      tArr[j] = temp; 
     } 

     ///Bubble sort 
     public void sort() { 
     int n = tArr.length; 
     for(int i = 0; i < n; i++) { 
      for(int j = 1; j < n-i; j++) { 
       if(tArr[j-1].compareTo(tArr[j]) > 0) { 
        swap(j); 
       } 
      } 
     } 
     } 

public void read() { 

    System.out.println("in read()"); 
    String pwd = System.getProperty("user.dir"); 
    String fileName = pwd + "/directory.txt"; 
    System.out.println("Looking for: " + fileName); 
    String fileLine = ""; 

    try { 

     File f = new File(fileName); 

     if(f.exists()) { 
      System.out.println("Directory profile found, loading data..."); 
     } 
     else { 
      System.out.println("Directory profile not found, loading default..."); 

      return; // done, return back to the caller 
     } 

     // Read file 
     FileReader data = new FileReader(fileName); 

     // Wrap FileReader with BufferedReader 
     BufferedReader br = new BufferedReader(data); 
     //String tmp; 

     int i=0; 
     while ((fileLine = br.readLine()) != null) {      
      tArr[i++] = fileLine; 
     } 

     // ok, time to load an existing profile 


     // close the file 
     br.close(); 

    } catch (FileNotFoundException fnf) { 
     System.out.println("File not found: " + fileName); 
    } catch (IOException ioe) { 
     System.out.println("Error reading file: " + fileName); 
    } catch (Exception exc) { 
     System.out.println("Something went wrong: " + fileName); 
    } 

} 

    public void write() { 

    System.out.println("in write()"); 
    String pwd = System.getProperty("user.dir"); 
    String fileName = pwd + "/Sorted.txt";   

    try {    

     System.out.println("Writing out to: " + fileName); 

     File file = new File(fileName); 
     // creates the file 
     file.createNewFile(); 
     // create FileWriter object 
     FileWriter writer = new FileWriter(file); 

     // output to file 
     // ADD pIdx, pArr, mood, and anything else here... 

     for(int i = 0; i < tArr.length; i++) { 
      writer.write(tArr[i] + "\n"); 
     }    

     writer.flush(); 
     writer.close(); 

    } catch (IOException ex) { 
     System.out.println("Error writing to file: " + fileName); 
    } 

    } 

} 

而我的主要文件是SDRIVE:

class SDriver{ 

    public static void main(String args []){ 
     Sort io = new Sort(); 
     io.read(); 
     io.write(); 

    } 
} 
+0

那麼'sort()'方法永遠不會被調用,是嗎?除此之外,Java支持在java.util.Arrays類中進行排序,這通常比自我實現的排序算法更受歡迎。 – user140547

回答

0

你應該io.read後添加io.sort()方法();行和只是之前io.write();一行。

我看你用冒泡排序,如果你真的想實現自己的排序方法來看看快速排序和歸併排序這比冒泡排序上更大的陣列快很多很多,但也更難實現。插入和選擇排序不如合併或快速排序快,但仍比泡泡更快,並且仍然易於自我實現。或者使用Arrays.sort(tArr);如果你想快速做到這一點。

+0

非常感謝!它現在有效 –