【问题标题】:Bubble sort lines of a file (Java)文件的冒泡排序行(Java)
【发布时间】:2021-06-29 06:26:58
【问题描述】:

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

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;
        }
      }
    }
  }
}

【问题讨论】:

  • 您的sortByMonth 是否按预期工作?
  • 必须是冒泡排序吗?您是否保证文件releasedates.txt 中的每一行都包含不同的月份?你保证文件releasedates.txt 正好包含三行吗?我认为您的输出文件将在一行中包含所有数据。这就是你想要的吗?
  • @Abra 好吧,我正在做的事情说我不允许在 java 中使用内置的排序方法,所以我只是使用冒泡排序作为我最熟悉的排序方法.我假设每行的日期就像一个数字,所以较小的数字会先出现

标签: java arrays string sorting methods


【解决方案1】:

只需在您的output 方法中调用sortByMonth: 此外,没有必要将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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-25
    • 2017-06-17
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多