java - 从文本文件中读取两列并在 java 中对两列进行排序

标签 java file text

18 14
19 15
20 16
21 17
22 18
23 19
24 20
25 20
25 21

47 44
48 44
48 45
49 44

49 43
49 42
50 42
50 43
51 43
53 40
53 39
53 38
54 38
54 39

我的工作是我应该读取这个输入文件,删除空白行并对两列进行排序 这里是我的java代码,它尝试读取文件并打印出它的值: 这里我将整数存储在不同的数组中 代码是:

import java.io.*;
import java.lang.*;
import java.util.*;

public class read
 {
        public static void main(String[] args) throws Exception 
        {
        System.out.println("Enter file name");
        DataInputStream dis=new DataInputStream(System.in);
        String dir1=dis.readLine();
        File infile = new File(dir1);
        System.out.println("Enter output file name");
        DataInputStream dis2=new DataInputStream(System.in);
        String dir3=dis.readLine();
        String path="E:/photos";
        String newpath=path + "/" +dir3;
        File outfile = new File(newpath);
        int newcount=0,newcount1=0;
        FileReader fr=new FileReader(infile);
        BufferedReader fr11= new BufferedReader(fr);
        FileWriter fw = new FileWriter(outfile);
        BufferedWriter bufferFileWriter  = new BufferedWriter(fw);
        Scanner input = new Scanner(infile);
        String[] outputArray1 = new String[31];
        String[] outputArray2 = new String[31];
        int i = 0;
               while (input.hasNextLine()) 
                {
                        String line = input.nextLine();
                        if(line.length() > 0)
                {
                        String[] columns = line.split(" ");
                        System.out.println("my first column : "+ columns[0] );
                        System.out.println("my second column : "+ columns[1] );
                        outputArray1[i] = columns[0];
                        outputArray2[i] = columns[1];
                        i++;
                }
                }
                String[][] temp = new String[2][];
                temp[0]= outputArray1;
                temp[1]= outputArray2;
               for (int k=0;k<2;k++)
        for (int j=0;j<i;j++)
        {
System.out.println("new row"+k+"new col"+j+"value="+temp[k][j]);
        }
        if (temp.length > 0) {
            for (int m = 0; m< temp[0].length; m++) {
                for (int n = 0; n< temp.length; n++) {
                    System.out.print(temp[n][m] + " ");
                }
                System.out.print("\n");
            }
        }
                       fr.close();
                       fw.close();
                    bufferFileWriter.close();
}
}

最佳答案

You can go for this approach, Create a List<Item> where Item is a type containing 2 Column values. (x1 and x2)

Then write a compareTo(Item o) which compares the x1 values of the two Item objects presented to it in compare, and if that gave a definite answer, returned that answer.

public class Item implements Comparable<Item> {
    private Integer int1;
    private Integer int2;

    @Override
    public int compareTo(Item o) {
        return int1 > (o.int1);
    }
}

希望这有帮助。

关于java - 从文本文件中读取两列并在 java 中对两列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18579357/

相关文章:

php - 如何在没有换行符的javascript变量中使用php读取文件行?

java - 在 Windows 上的 Java 中检查文件是否为空的最有效方法

ios - 在 iOS 中进行复制拟合的最佳方法?

java - 读取 Artifact 描述符失败 : IntelliJ

java - 如何处理大型数据列表

java - 使用泛型时,RestClient 不会返回精确的未编码对象

file - 使用批处理脚本逐行合并两个文本文件

Javascript 从类中删除文本

text - 如何使用 NLP 将非结构化文本内容分成不同的段落?

java - JMH 基准测试 - 比较替代实现的运行时间的简洁方法