我们之前的文章写过,用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[]。
下面附上两个运行截图:
这是读取的txt文件,数字之间用tab分割符分开。
这是运行截图,输出了一维结点集合数组CH[],运行成功