首页 > 解决方案 > 文件的冒泡排序行(Java)

问题描述

我正在尝试找到一种方法对如下所示的文本文件进行冒泡排序:

04/26/16  Sega 3D Classics Collection
07/14/16  Batman: Arkham Underworld
06/24/16  Tokyo Mirage Sessions #FE

本质上,我希望它们按照发布日期的顺序排列,例如 2016 年 1 月 25 日发布的游戏将在 2016 年 6 月 26 日发布的游戏之前发布,它会创建一个像这样的新文件:

04/26/16  Sega 3D Classics Collection
06/24/16  Tokyo Mirage Sessions #FE
07/14/16  Batman: Arkham Underworld

我确信将涉及一个 for 循环,因为每一行将是具有交换方法的数组的一个元素和一个临时值以进行比较以交换顺序但我想不出一种将新顺序写入的方法一个新文件。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Main{
  public static void main (String[]args) throws IOException{
    File file = new File("releasedates.txt");
    String[]arr;
    arr = input(file);
    output(file,arr);
  }

  public static String[]input (File file) throws FileNotFoundException{
    String[]arr = new String[3];
    Scanner sc = new Scanner(file);
    for(int i = 0; i < arr.length; i++){
      arr[i] = sc.nextLine();
    }
    return arr;
  }

  public static void output(File file, String[] info) throws IOException{
    FileWriter writer = new FileWriter("fileName.txt");
    for(String aString:info){
      writer.write(aString);
    }
    writer.close();
  }

  public static void sortByMonth(String[]info){
    String temp;
    for (int j = 0; j < info.length; j++) {
      for (int i = j + 1; i < info.length; i++) {
        if (info[i].compareTo(info[j]) < 0) {
          temp = info[j];
          info[j] = info[i];
          info[i] = temp;
        }
      }
    }
  }
}

标签: javaarraysstringsortingmethods

解决方案


sortByMonth只需在您的方法内部调用output:此外,无需将File对象传递给它,output因为它没有被使用。

public static void output(String[] info) throws IOException{
    sortByMonth(info);
    FileWriter writer = new FileWriter("fileName.txt");
    for(String aString:info){
        writer.write(aString);
    }
    writer.close();
}

推荐阅读