2016-11-06 7 views
0

私はI/O javaファイルを持っています.SAMiveファイルにはメイン、.txtというランダムな単語ソートされた.txtを使用してランダムな単語を降順に昇順に返します。ソートされたすべての単語が印刷されますが、ソートされません。私は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

ありがとう!それは今働く –

関連する問題