按字母顺序对文本文件中的数组进行排序,然后输出到另一个java文件中
我正在做一项作业,我需要使用扫描仪从文件中读取文本。然后把它写在一个循环中,形成一个字符串数组。并使用数组。sort方法按字母顺序对数组进行排序。之后,它将数组打印到输出文件中。还必须在命令行上显示这一点。输入文件上的句子是“生存还是毁灭,这是个问题”,它必须逐字显示在新行中的每个单词上。这就是我到目前为止所知道的,但是排序方法不是排序,它只是读取数组按字母顺序对文本文件中的数组进行排序,然后输出到另一个java文件中,java,arrays,list,sorting,text-files,Java,Arrays,List,Sorting,Text Files,我正在做一项作业,我需要使用扫描仪从文件中读取文本。然后把它写在一个循环中,形成一个字符串数组。并使用数组。sort方法按字母顺序对数组进行排序。之后,它将数组打印到输出文件中。还必须在命令行上显示这一点。输入文件上的句子是“生存还是毁灭,这是个问题”,它必须逐字显示在新行中的每个单词上。这就是我到目前为止所知道的,但是排序方法不是排序,它只是读取数组 public static void main(String[] args) throws IOException { try {
public static void main(String[] args) throws IOException {
try {
try (Scanner input = new Scanner(new File("input.txt"))) {
while (input.hasNextLine()) {
String[] str = {input.next().toString()};
Arrays.sort(str);
for (String stringArray : str) {
System.out.println(Arrays.toString(str));
}
}
}
} catch (Exception ex) {
}
}
万一我不完全明白我在问什么,这是关于完整程序最后要做什么的说明。现在我只是想让排序方法发挥作用
创建字符串数组以存储从输入文件读取的单词。您可以假设输入文件将包含10000个字或更少
使用扫描仪读取输入文件。在循环的头中,对Scanner对象调用hasNext()方法。只要文件有更多的字符串并且数组还没有填充,就继续循环
在循环体中,对Scanner对象调用next()方法。此方法返回一个字符串。将其转换为小写(有一种String方法可以实现这一点——请参阅String的API),然后将小写单词分配给String数组的一个元素
循环读取完文件后,调用方法Arrays.sort(…),将字符串数组作为参数传递给此方法
使用PrintWriter将排序数组的内容写入另一个文件。您需要使用循环来写入数组的元素。在这个循环中,编写一些代码以确保同一个字不会多次写入输出文件。使用变量保存写入文件的最后一个单词。在写下一个单词之前,请将其与上一个单词进行比较,并且仅当它不同时才写。如果您认为这就是您想要写的(但如果文件很大,请尝试使用一些排序的集合):
publicstaticvoidmain(字符串[]args)引发IOException{
尝试(扫描仪输入=新扫描仪(新文件(“input.txt”)){
List inputText=新建ArrayList();
while(input.hasNextLine()){
inputText.add(input.nextLine());
}
数组。排序(inputText);
for(字符串str:inputText){
系统输出打印项次(str);
}
}
}如果您认为这是您想要的(但如果文件很大,请尝试使用一些排序的集合):
publicstaticvoidmain(字符串[]args)引发IOException{
尝试(扫描仪输入=新扫描仪(新文件(“input.txt”)){
List inputText=新建ArrayList();
while(input.hasNextLine()){
inputText.add(input.nextLine());
}
数组。排序(inputText);
for(字符串str:inputText){
系统输出打印项次(str);
}
}
}因为您只读了一行,所以请对其进行排序,然后再次覆盖它!我更喜欢使用BufferedReader阅读并添加到ArrayList
FileReader fileReader = new FileReader("input.txt");
List<String> lines;
try (BufferedReader bufferedReader = new BufferedReader(fileReader)) {
lines = new ArrayList<>();
String line;
while ((line = bufferedReader.readLine()) != null) {
lines.add(line);
}
}
Collections.sort(lines);
谢谢你的提示。因为你只读了一行,所以要对它进行排序并再次覆盖它!我更喜欢使用BufferedReader阅读并添加到ArrayList
FileReader fileReader = new FileReader("input.txt");
List<String> lines;
try (BufferedReader bufferedReader = new BufferedReader(fileReader)) {
lines = new ArrayList<>();
String line;
while ((line = bufferedReader.readLine()) != null) {
lines.add(line);
}
}
Collections.sort(lines);
感谢您的提示。请提供输入/输出示例。目前,您正在读取每一行,然后对一个单例数组进行排序(显然没有任何作用),然后将该行写回。请提供输入/输出示例。当前,您正在读取每一行,然后对一个单例数组进行排序(显然没有任何作用),然后将该行写回。
Arrays.sort(input)代码>-不。数组。排序(输入)代码>-不。
String[] array = lines.toArray(new String[lines.size()]);