Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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 在另一个文件中对txt文件的整数进行排序_Java_Java.util.scanner_Filewriter - Fatal编程技术网

Java 在另一个文件中对txt文件的整数进行排序

Java 在另一个文件中对txt文件的整数进行排序,java,java.util.scanner,filewriter,Java,Java.util.scanner,Filewriter,我必须在另一个名为“file_2.txt”的文件中对名为“file_1.txt”的文件中的每个整数进行排序,但编译时它什么也不做 import java.io.*; import java.util.Scanner; public static void main(String[] args){ try { Scanner fileScanner = new Scanner(new File("D:\\file_1.txt")); while(file

我必须在另一个名为“file_2.txt”的文件中对名为“file_1.txt”的文件中的每个整数进行排序,但编译时它什么也不做

import java.io.*;
import java.util.Scanner;


public static void main(String[] args){

    try
    {   
    Scanner fileScanner = new Scanner(new File("D:\\file_1.txt"));
    while(fileScanner.hasNextLine()){
        Scanner lineScanner= new Scanner(fileScanner.nextLine());
        while (lineScanner.hasNext() && lineScanner.hasNextInt())
        {
            try{
            FileWriter file=new FileWriter("D:\\file_2.txt");
            BufferedWriter writer=new BufferedWriter(file);
            int s = lineScanner.nextInt();
            writer.write(s);
            writer.newLine();
            writer.close();
            file.close();
            }
            catch(FileNotFoundException e){
            e.printStackTrace();
            }
            catch(IOException e){
            e.printStackTrace();
            }

        }lineScanner.close();

    }fileScanner.close();
}

    catch(FileNotFoundException e){
        e.printStackTrace();
    }
}
}

您正在为第一个文件的每一行打开一个文件。你不想那么做

以下是您应该做什么的概述

1) 将一个文件中的所有数字加载到列表中

List<Integer> numbers = new ArrayList<Integer>();
Scanner fileScanner = new Scanner(new File("D:\\file_1.txt"));
while(fileScanner.hasNextLine()){
    numbers.add(Integer.parseInt(fileScanner.nextLine());
}
3) 将列表写入新文件

try (PrintWriter pw = new PrintWriter(new File("D:\\file_2.txt"))) {
    for (int x : numbers) {
        pw.println(x);
    }
}

您可以将文件读入
HashSet
,该文件将自动维护已排序的整数,然后将其写入另一个文件

// Hashset maintains the sorted list
Set<Integer> integers = new HashSet<Integer>();
Scanner fileScanner = new Scanner(new File("D:\\file_1.txt"));
while(fileScanner.hasNextLine())
{
    integers.add(Integer.parseInt(fileScanner.nextLine());
}

try (PrintWriter writer = new PrintWriter(new File("D:\\file_2.txt"))) 
{
    for (int integer : integers) 
    {
       writer.println(integer);
    }
}
//Hashset维护排序列表
Set integers=new HashSet();
Scanner fileScanner=new Scanner(新文件(“D:\\File\u 1.txt”);
while(fileScanner.hasNextLine())
{
add(Integer.parseInt(fileScanner.nextLine());
}
试试(PrintWriter=新的PrintWriter(新文件(“D:\\File\u 2.txt”))
{
for(整数:整数)
{
writer.println(整数);
}
}

您是否尝试过使用调试器逐行检查代码以查看发生了什么?您忘了问一个问题。我建议您使用谷歌搜索如何使用java读取文件,如何使用java编写文件以及如何使用java对整数进行排序。对于每种情况,都有成百上千的教程。没有任何帮助吗?您在至少打开一个文件,这样就完成了一些事情
// Hashset maintains the sorted list
Set<Integer> integers = new HashSet<Integer>();
Scanner fileScanner = new Scanner(new File("D:\\file_1.txt"));
while(fileScanner.hasNextLine())
{
    integers.add(Integer.parseInt(fileScanner.nextLine());
}

try (PrintWriter writer = new PrintWriter(new File("D:\\file_2.txt"))) 
{
    for (int integer : integers) 
    {
       writer.println(integer);
    }
}