我们之前的文章写过,用java读取txt文件,包括用空格,逗号或者多个空格分隔的字符,这次介绍一下用tab分隔符分隔,同时将txt文件中的数字存入二维数组方便以后使用,同时获得二维数组中不同结点的集合。

  我们用java读取txt文件,依然使用的是FileInputStream,按行读取,如果遇到tab分隔符,我们使用\t来表示它,可以写成 String[] arr = line.split("\t");在得到二维数组后,将数组中所有元素放入一维数组,之后将数组中每一个数字与后面的比较,相同就删除,可以得到txt文件中包含的不同结点的一维数组集合。

程序代码如下:

package erwei;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 *
 * @author Administrator
 */
public class Erwei {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        // TODO code application logic here
        int[][]shuzu = getFileInput("C:\\Users\\Administrator.DESKTOP-NS136IT\\Desktop\\tt.txt");
//        System.out.println(shuzu.length);
        int QQ=0;
        int AA=0;
        int ch[]= new int [shuzu.length*2];
        for (int i = 0; i < shuzu.length; i++)
        {
            for (int j = 0; j < shuzu[i].length; j++) 
            {  
//                System.out.print(shuzu[i][j]+"\t"); 
                ch[QQ]=shuzu[i][j];
                QQ++;
            }
        }

        for(int i=0;i<ch.length;i++)
        {
            for(int j=i+1;j<ch.length;j++)
            {
                if(ch[i]==ch[j])
                {
                    ch[i]=-1;
                    AA++;
                }
            }
        }
        int CH[] = new int [ch.length-AA];
        int za=0;
        for(int i=0;i<ch.length;i++)
        {
            if(ch[i]!=-1)
            {
                CH[za]=ch[i];
                za++;
            }
        }
       for(int i=0;i<CH.length;i++)
        {
          System.out.print(CH[i]+"\t");
        }
 //       int ch[]= new int [shuzu.length*2];
        
 //       String pathname = "D:\\twitter\\13_9_6\\dataset\\en\\input.txt";

    }
    private static int[][] getFileInput(String pathName) throws Exception {
        FileInputStream inputStream = null;
        Scanner sc = null;
        List<double[]> list = new ArrayList<>();
        inputStream = new FileInputStream(pathName);
        sc = new Scanner(inputStream, "utf-8");
        while (sc.hasNextLine()) {
            String line = sc.nextLine();
            int s = 0;
  //          String[] arr = line.split(" {1,}");
            String[] arr = line.split("\t");
            double[] dArr = new double[arr.length];
            for (String ss : arr) {
                if (ss != null) {
                    dArr[s++] = Double.parseDouble(ss);
                }
            }
            list.add(dArr);
        }
        int max = 0;
        for (int i = 0; i < list.size(); i++) {
            if (max < list.get(i).length)
                max = list.get(i).length;
        }
        int[][] array = new int[list.size()][max];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < list.get(i).length; j++) {
                array[i][j] = (int) list.get(i)[j];
//                System.out.print(array[i][j]+"\t");
               
            }
        }
 //       System.out.print(array[1][1]+"%");
        inputStream.close();
        sc.close();
        return array;
    }

}

  代码中的函数返回的是二维数组shuzu[][],接下来的代码可以直接使用该二维数组,和结点集合:一维数组CH[]。

下面附上两个运行截图:

Java 读取txt文件中用tab分隔符分隔的数字,并存入二维数组输出,后删除数组中相同的数字,作为_java

这是读取的txt文件,数字之间用tab分割符分开。

Java 读取txt文件中用tab分隔符分隔的数字,并存入二维数组输出,后删除数组中相同的数字,作为_java_02

这是运行截图,输出了一维结点集合数组CH[],运行成功