TSV文件转换为2d数组-java
我有一个tsv txt文件,包含3行数据 它看起来像: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);
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-FAPC 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-FAPC 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-FAPC 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-FAPC 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想要的值的数量无关,那么