2017-02-25 3 views
0

"file_1.txt"というファイルのすべての整数を "file_2.txt"という別のファイルにソートする必要がありますが、コンパイルすると何もしません。txtファイルの整数を別のファイルにソート

import java.io.*; 
import java.util.Scanner; 


public static void main(String[] args){ 

    try 
    { 
    Scanner fileScanner = new Scanner(new File("D:\\file_1.txt")); 
    while(fileScanner.hasNextLine()){ 
     Scanner lineScanner= new Scanner(fileScanner.nextLine()); 
     while (lineScanner.hasNext() && lineScanner.hasNextInt()) 
     { 
      try{ 
      FileWriter file=new FileWriter("D:\\file_2.txt"); 
      BufferedWriter writer=new BufferedWriter(file); 
      int s = lineScanner.nextInt(); 
      writer.write(s); 
      writer.newLine(); 
      writer.close(); 
      file.close(); 
      } 
      catch(FileNotFoundException e){ 
      e.printStackTrace(); 
      } 
      catch(IOException e){ 
      e.printStackTrace(); 
      } 

     }lineScanner.close(); 

    }fileScanner.close(); 
} 

    catch(FileNotFoundException e){ 
     e.printStackTrace(); 
    } 
} 
} 
+0

デバッガを使用してコードをステップバイステップで実行してみましたか? –

+0

質問をするのを忘れました。 – Mureinik

+0

私は、javaを使用してファイルを読み込む方法、javaを使用してファイルを書き込む方法、およびjavaを使用して整数をソートする方法をGoogleに提案します。文字通り何百ものチュートリアルがあります。 – opensam

答えて

0

あなたはすべての行の最初のファイルののためのファイルを開いています。あなたはそれをしたくない...

ここでは、何をすべきかの概要を説明します。

1)1つのファイルからすべての数値をリストにロードします。

List<Integer> numbers = new ArrayList<Integer>(); 
Scanner fileScanner = new Scanner(new File("D:\\file_1.txt")); 
while(fileScanner.hasNextLine()){ 
    numbers.add(Integer.parseInt(fileScanner.nextLine()); 
} 

2))の数値

Collections.sort(numbers); 

3をソート新しいファイルにリストを書く

try (PrintWriter pw = new PrintWriter(new File("D:\\file_2.txt"))) { 
    for (int x : numbers) { 
     pw.println(x); 
    } 
} 
0

あなたは自動的に整数をソート維持することHashSetにファイルを読み込むことができますし、それを別のファイルに書き込んでください。

// Hashset maintains the sorted list 
Set<Integer> integers = new HashSet<Integer>(); 
Scanner fileScanner = new Scanner(new File("D:\\file_1.txt")); 
while(fileScanner.hasNextLine()) 
{ 
    integers.add(Integer.parseInt(fileScanner.nextLine()); 
} 

try (PrintWriter writer = new PrintWriter(new File("D:\\file_2.txt"))) 
{ 
    for (int integer : integers) 
    { 
     writer.println(integer); 
    } 
} 
関連する問題