java - 文件的冒泡排序行(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;
}
}
}
}
}
解决方案
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();
}
推荐阅读
- nginx - Nginx 没有启动
- javascript - 在javascript中删除指定的字符串
- reactjs - 使用动态图表 [动画图表]
- excel - 如何在Excel中提取数字来过滤“数字+字母”记录
- swift - React Native 项目中的 Swift 包管理器
- javascript - 重定向到另一个页面的 Href 链接具有特定的操作
- sql - APEX Office Print 中的数据源出错
- azure - 在 Powershell 中安装 Az 模块时出错 - 无法安装包“Az.Accounts”
- python - 尝试从 dockerized Python 脚本连接时出现 FTP 错误“500 Illegal PORT command”
- css - 仅当向下滚动或页面高于视频时才使元素可见,仅 CSS