如何bubblesort/alphabetize(使用.compareTo)用户输入的.txt 文件? [Java]
How to bubblesort/alphabetize(using .compareTo) a .txt file that the user enters? [Java]
好的。我花了几个小时试图解决这个问题,但我得到的只是一大堆错误。我想做的是一个程序,它允许某人输入一个 .txt 文件(这不是我的问题)并通过使用某种 for 循环让它自己按字母顺序排列,然后将自己显示给用户(我也不知道如何打印我的 .txt 文件并将其显示给用户)。这是我的代码(别笑,我知道这很可怕)。我可以很好地编写代码,但出于某种原因,这个特定领域给我带来了很多问题。
import java.util.Scanner;
import java.io.File;
public class AlphaSortingBubble {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter file you want to alphabetize");
String list = keyboard.nextLine();
Scanner infile = null;
try {
infile = new Scanner(new File(list));
System.out.println("File Found: " + list);
} catch (Exception e) {
System.out.println("Error: file not found");
System.exit(0);
}
List < String > myList = new ArrayList < String > (Arrays.asList(list.split(",")));
sortStringBubble(myList);
for (int k = 0; k < 4; k++)
System.out.println(myList[k]);
}
public static void sortStringBubble(String x[]) {
int j;
boolean flag = true; // will determine when the sort is finished
String temp;
while (flag) {
flag = false;
for (j = 0; j < x.length - 1; j++) {
if (x[j].compareToIgnoreCase(x[j + 1]) > 0) { // ascending sort
temp = x[j];
x[j] = x[j + 1]; // swapping
x[j + 1] = temp;
flag = true;
}
}
}
}
}
是的,这很糟糕。我会感激任何能提供帮助的人。
存在编译错误,您的 sortStringBubble
方法采用 String[]
并且您使用 List<String>
作为参数调用它。
读取文件行并对它们进行排序的最简单方法可能是这个
List<String> lines=Files.readAllLines(Paths.get(pathToFile));
Collections.sort(lines); //lines now contains the sorted lines.
根据你的问题陈述,我认为你正在寻找对单个文本文件进行排序的方法。
然而,看看声明:
List < String > myList = new ArrayList < String > (Arrays.asList(list.split(",")));
在上面的语句中,您试图创建一个包含您在控制台中输入的所有逗号分隔字符串的列表。这是否意味着您要提供多个文件名并用逗号分隔?如果是,则说明您没有处理代码中的所有文件,如以下语句所示:
infile = new Scanner(new File(list));
以上语句只会查找一个文件。所以你必须检查你是否需要单个文件或多个文件并相应地处理它。假设您只想对单个文件进行排序,那么,您需要解析文件并将其传递到 String 数组中,因为这是 sortStringBubble(String[] x)
的语法
好的。我花了几个小时试图解决这个问题,但我得到的只是一大堆错误。我想做的是一个程序,它允许某人输入一个 .txt 文件(这不是我的问题)并通过使用某种 for 循环让它自己按字母顺序排列,然后将自己显示给用户(我也不知道如何打印我的 .txt 文件并将其显示给用户)。这是我的代码(别笑,我知道这很可怕)。我可以很好地编写代码,但出于某种原因,这个特定领域给我带来了很多问题。
import java.util.Scanner;
import java.io.File;
public class AlphaSortingBubble {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter file you want to alphabetize");
String list = keyboard.nextLine();
Scanner infile = null;
try {
infile = new Scanner(new File(list));
System.out.println("File Found: " + list);
} catch (Exception e) {
System.out.println("Error: file not found");
System.exit(0);
}
List < String > myList = new ArrayList < String > (Arrays.asList(list.split(",")));
sortStringBubble(myList);
for (int k = 0; k < 4; k++)
System.out.println(myList[k]);
}
public static void sortStringBubble(String x[]) {
int j;
boolean flag = true; // will determine when the sort is finished
String temp;
while (flag) {
flag = false;
for (j = 0; j < x.length - 1; j++) {
if (x[j].compareToIgnoreCase(x[j + 1]) > 0) { // ascending sort
temp = x[j];
x[j] = x[j + 1]; // swapping
x[j + 1] = temp;
flag = true;
}
}
}
}
}
是的,这很糟糕。我会感激任何能提供帮助的人。
存在编译错误,您的 sortStringBubble
方法采用 String[]
并且您使用 List<String>
作为参数调用它。
读取文件行并对它们进行排序的最简单方法可能是这个
List<String> lines=Files.readAllLines(Paths.get(pathToFile));
Collections.sort(lines); //lines now contains the sorted lines.
根据你的问题陈述,我认为你正在寻找对单个文本文件进行排序的方法。
然而,看看声明:
List < String > myList = new ArrayList < String > (Arrays.asList(list.split(",")));
在上面的语句中,您试图创建一个包含您在控制台中输入的所有逗号分隔字符串的列表。这是否意味着您要提供多个文件名并用逗号分隔?如果是,则说明您没有处理代码中的所有文件,如以下语句所示:
infile = new Scanner(new File(list));
以上语句只会查找一个文件。所以你必须检查你是否需要单个文件或多个文件并相应地处理它。假设您只想对单个文件进行排序,那么,您需要解析文件并将其传递到 String 数组中,因为这是 sortStringBubble(String[] x)
的语法