Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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
TSV文件转换为2d数组-java_Java - Fatal编程技术网

TSV文件转换为2d数组-java

TSV文件转换为2d数组-java,java,Java,我有一个tsv txt文件,包含3行数据 它看起来像: HG sn FA PC 2 16:0 PI 1 18:0 PS 3 20:0 PE 2 24:0 26:0 16:1 18:2 我想把这个文件读入java中的二维数组 但不管我怎么做,我总是会出错 File file = new File("table.txt"); Scanner scanner = new Scanner(file);

我有一个tsv txt文件,包含3行数据

它看起来像:

HG  sn  FA  
PC  2   16:0
PI  1   18:0
PS  3   20:0
PE  2   24:0
        26:0
        16:1
        18:2
我想把这个文件读入java中的二维数组

但不管我怎么做,我总是会出错

File file = new File("table.txt");
        Scanner scanner = new Scanner(file);
        final int maxLines = 100;
        String[][] resultArray = new String[maxLines][];
        int linesCounter = 0;
        while (scanner.hasNextLine() && linesCounter < maxLines) {
            resultArray[linesCounter] = scanner.nextLine().split("\t");
            linesCounter++;
        }

        System.out.print(resultArray[1][1]);
第31行是

 System.out.print(resultArray[1][1]);

我找不到这个错误不断出现的任何原因

在您的情况下,我将使用Java 7
文件。readAllLines

比如:

String[][] resultArray;

List<String> lines = Files.readAllLines(Paths.get("table.txt"), StandardCharsets.UTF_8);

//lines.removeAll(Arrays.asList("", null)); // <- remove empty lines

resultArray = new String[lines.size()][]; 

for(int i =0; i<lines.size(); i++){
  resultArray[i] = lines.get(i).split("\t"); //tab-separated
}
这就是文件(按
edit
并抓取内容,它应该以制表符分隔):

HG-sn-FA
PC 2 16:0 PI 118:0 诗3 20:0 体育2 24:0 26:0 16:1 18:2

[编辑]

要获得
16:1

System.out.println(root[6][2]);

在您的情况下,我将使用Java7
文件.readAllLines

比如:

String[][] resultArray;

List<String> lines = Files.readAllLines(Paths.get("table.txt"), StandardCharsets.UTF_8);

//lines.removeAll(Arrays.asList("", null)); // <- remove empty lines

resultArray = new String[lines.size()][]; 

for(int i =0; i<lines.size(); i++){
  resultArray[i] = lines.get(i).split("\t"); //tab-separated
}
这就是文件(按
edit
并抓取内容,它应该以制表符分隔):

HG-sn-FA
PC 2 16:0 PI 118:0 诗3 20:0 体育2 24:0 26:0 16:1 18:2

[编辑]

要获得
16:1

System.out.println(root[6][2]);

在您的情况下,我将使用Java7
文件.readAllLines

比如:

String[][] resultArray;

List<String> lines = Files.readAllLines(Paths.get("table.txt"), StandardCharsets.UTF_8);

//lines.removeAll(Arrays.asList("", null)); // <- remove empty lines

resultArray = new String[lines.size()][]; 

for(int i =0; i<lines.size(); i++){
  resultArray[i] = lines.get(i).split("\t"); //tab-separated
}
这就是文件(按
edit
并抓取内容,它应该以制表符分隔):

HG-sn-FA
PC 2 16:0 PI 118:0 诗3 20:0 体育2 24:0 26:0 16:1 18:2

[编辑]

要获得
16:1

System.out.println(root[6][2]);

在您的情况下,我将使用Java7
文件.readAllLines

比如:

String[][] resultArray;

List<String> lines = Files.readAllLines(Paths.get("table.txt"), StandardCharsets.UTF_8);

//lines.removeAll(Arrays.asList("", null)); // <- remove empty lines

resultArray = new String[lines.size()][]; 

for(int i =0; i<lines.size(); i++){
  resultArray[i] = lines.get(i).split("\t"); //tab-separated
}
这就是文件(按
edit
并抓取内容,它应该以制表符分隔):

HG-sn-FA
PC 2 16:0 PI 118:0 诗3 20:0 体育2 24:0 26:0 16:1 18:2

[编辑]

要获得
16:1

System.out.println(root[6][2]);



不要那样做。将其读入
列表
,其中
MyObject
包含数据。这是一种OO语言,请使用它。要读取文件,请使用读取CSV库,例如。数组索引是基于零的。数组的第一个单元格是resultArray[0][0]。如果是TSV,则必须在制表符(\\t)上拆分,而不是在减号(“-”)上拆分。拆分在输入文件的任何地方都是“-”delimeter,我看不到“-”。将delimeter设置为(空格)或(制表符),它应该可以工作。是的,我已经纠正了这一点,但是当我尝试调用resultArray[2][5]时,我在线程“main”java.lang.ArrayIndexOutOfBoundsexception中得到:exception:5注意,如果您说
System.out.println(Arrays.toString(resultArray[1]),这将准确地告诉您数组中有什么。不要这样做。将其读入
列表
,其中
MyObject
包含数据。这是一种OO语言,请使用它。要读取文件,请使用读取CSV库,例如。数组索引是基于零的。数组的第一个单元格是resultArray[0][0]。如果是TSV,则必须在制表符(\\t)上拆分,而不是在减号(“-”)上拆分。拆分在输入文件的任何地方都是“-”delimeter,我看不到“-”。将delimeter设置为(空格)或(制表符),它应该可以工作。是的,我已经纠正了这一点,但是当我尝试调用resultArray[2][5]时,我在线程“main”java.lang.ArrayIndexOutOfBoundsexception中得到:exception:5注意,如果您说
System.out.println(Arrays.toString(resultArray[1]),这将准确地告诉您数组中有什么。不要这样做。将其读入
列表
,其中
MyObject
包含数据。这是一种OO语言,请使用它。要读取文件,请使用读取CSV库,例如。数组索引是基于零的。数组的第一个单元格是resultArray[0][0]。如果是TSV,则必须在制表符(\\t)上拆分,而不是在减号(“-”)上拆分。拆分在输入文件的任何地方都是“-”delimeter,我看不到“-”。将delimeter设置为(空格)或(制表符),它应该可以工作。是的,我已经纠正了这一点,但是当我尝试调用resultArray[2][5]时,我在线程“main”java.lang.ArrayIndexOutOfBoundsexception中得到:exception:5注意,如果您说
System.out.println(Arrays.toString(resultArray[1]),这将准确地告诉您数组中有什么。不要这样做。将其读入
列表
,其中
MyObject
包含数据。这是一种OO语言,请使用它。要读取文件,请使用读取CSV库,例如。数组索引是基于零的。数组的第一个单元格是resultArray[0][0]。如果是TSV,则必须在制表符(\\t)上拆分,而不是在减号(“-”)上拆分。拆分在输入文件的任何地方都是“-”delimeter,我看不到“-”。将delimeter设置为(空格)或(制表符),它应该可以工作。是的,我已经纠正了这一点,但是当我尝试调用resultArray[2][5]时,我在线程“main”java.lang.ArrayIndexOutOfBoundsexception中得到:exception:5注意,如果您说
System.out.println(Arrays.toString(resultArray[1]),这将准确地告诉您数组中有什么。字符组有什么关系?为什么不
\t++
?实际上,如果他想要3个值,足以使用
\t
与OP想要的值的数量无关,问题在于是否可能有多个分隔符。
\t
\t+
之间的区别在于,在第一种情况下,他将在最后一行得到3个值,在第二种情况下,他将得到2个值。@BobDalgleish是的,我们希望得到固定的列大小,这就是我只使用
\t
字符组的原因?为什么不
\t++
?实际上,如果他想要3个值,足以使用
\t
与OP想要的值的数量无关,问题在于是否可能有多个分隔符。
\t
\t+
之间的区别在于,在第一种情况下,他将在最后一行得到3个值,在第二种情况下,他将得到2个值。@BobDalgleish是的,我们希望得到固定的列大小,这就是我只使用
\t
字符组的原因?为什么不
\t++
?实际上,如果他想要3个值,足以使用
\t
与OP想要的值的数量无关,那么