2016-11-06 63 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

非常感谢!它现在有效 –