Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按字母顺序对文本文件中的数组进行排序,然后输出到另一个java文件中_Java_Arrays_List_Sorting_Text Files - Fatal编程技术网

按字母顺序对文本文件中的数组进行排序,然后输出到另一个java文件中

按字母顺序对文本文件中的数组进行排序,然后输出到另一个java文件中,java,arrays,list,sorting,text-files,Java,Arrays,List,Sorting,Text Files,我正在做一项作业,我需要使用扫描仪从文件中读取文本。然后把它写在一个循环中,形成一个字符串数组。并使用数组。sort方法按字母顺序对数组进行排序。之后,它将数组打印到输出文件中。还必须在命令行上显示这一点。输入文件上的句子是“生存还是毁灭,这是个问题”,它必须逐字显示在新行中的每个单词上。这就是我到目前为止所知道的,但是排序方法不是排序,它只是读取数组 public static void main(String[] args) throws IOException { try {

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

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()]);