не в состоянии сортировать входной текстовый файл построчно в выходном файле - PullRequest
0 голосов
/ 11 ноября 2018

Я столкнулся с проблемой. Я написал следующую программу для сортировки строки целых чисел в текстовом файле и вывода отсортированного списка целых чисел в выходной файл. Входной файл может содержать несколько строк целых чисел, и я хочу отсортировать их по одной строке за раз и распечатать в моем выходном файле.

Проблема в том, что программа читает все строки из входного текста и печатает непрерывную строку отсортированных чисел в выходном файле. Как заставить программу сортировать и печатать отсортированный список построчно в выходном файле?

import java.util.*;

import java.io.File;
import java.io.FileNotFoundException;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;


public class MergeSort {

    public static void main(String[] args) throws FileNotFoundException, IOException {
        // declare variable
        int data[];
        int start;
        int end;

        // define the file path that we want to read
        String input_filename = "C:\\Users\\Documents\\NetBeansProjects\\MergeSort\\input.txt";
        String output_file = "C:\\Users\\Documents\\NetBeansProjects\\MergeSort\\output.txt";

        File file = new File(input_filename);

        File outfile = new File(output_file);
        PrintWriter outFile = new PrintWriter(outfile);

        Scanner fileScanner = new Scanner(new FileReader(file));

        while(fileScanner.hasNextLine()){ 

        ArrayList<Integer> list = new ArrayList<Integer>();

        Scanner scanner_second = new Scanner(fileScanner.nextLine());

        while (scanner_second.hasNextInt()) {
            list.add(scanner_second.nextInt());
        }
        int[] intarray = list.stream().mapToInt(Integer::intValue).toArray();

        non_recursive_mergeSort(intarray, 0, intarray.length - 1);

        for (int i = 0; i <= intarray.length - 1; i++) {
            outFile.print(intarray[i] + " ");
        }
      }
        outFile.close();
    } 

1 Ответ

0 голосов
/ 11 ноября 2018

Вам не хватает println. Отрывок:

        for (int i = 0; i <= intarray.length - 1; i++) {
            outFile.print(intarray[i] + " ");
        }
        outFile.println(); // this is missing
    }
    outFile.close();
...