首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从文本文件中按字母顺序排列数组,然后输出到另一个文件java

从文本文件中按字母顺序排列数组,然后输出到另一个文件java
EN

Stack Overflow用户
提问于 2016-02-24 16:34:10
回答 2查看 2.2K关注 0票数 1

我正在做一个作业,我需要用扫描仪读取文件中的文本。然后将其写入生成字符串数组的循环中。并使用数组。方法按字母顺序对数组进行排序。之后,它将数组打印到输出文件中。还必须在命令行上显示这一点。输入文件上的句子是“是是还是不存在--这就是问题”,它必须逐字逐句地显示在新行上。到目前为止,这就是我所拥有的,但是排序方法不是排序,而是读取数组?

代码语言:javascript
运行
复制
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()方法。此方法返回一个字符串。将其转换为小写(这里有一个字符串方法--参见字符串的API ),然后将小写单词分配给字符串数组的一个元素。

循环读取完文件后,调用方法Arrays.sort(…),将字符串数组作为参数传递给此方法。

使用PrintWriter将排序数组的内容写入另一个文件。您需要使用一个循环来编写数组的元素。在这个循环中,编写一些代码以确保同一个单词不会多次写入输出文件。使用变量保存写入文件的最后一个单词。在你写下一个单词之前,把它和最后一个单词比较一下,只有当它不同的时候才写它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-24 16:48:21

如果认为这是您所要尝试的(但是如果文件很大,请尝试使用一些排序的集合):

代码语言:javascript
运行
复制
public static void main(String[] args) throws IOException {
  try (Scanner input = new Scanner(new File("input.txt"))) {
     List<String> inputText = new ArrayList();
     while (input.hasNextLine()) {
         inputText.add(input.nextLine());             
     }
     Arrays.sort(inputText);
     for (String str : inputText) {
          System.out.println(str);
     }            
 }

}

票数 1
EN

Stack Overflow用户

发布于 2016-02-24 16:49:23

因为你读了一行,把它排序,然后再重写一遍!我更喜欢用BufferedReader阅读并添加到ArrayList中。

代码语言:javascript
运行
复制
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);

您可以添加未知数量的项,而不需要处理数组大小。

如果您确实希望使用数组,请将这一行添加到代码的末尾:

代码语言:javascript
运行
复制
String[] array = lines.toArray(new String[lines.size()]);

谢谢Boris the Spider的提示。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35607794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档