Java 读取列文件中包含不同数字的 txt 并将数据存储在数组列表中
Java Reading a txt that has different numbers in its column file and store data in an arraylist
大家好,我下面有一个 txt 文件,我需要存储第二列数据,但它给了我一个错误,因为每行有 1 个输入,有些有 2 个输入,有些有 3 个输入。我该如何解决这个问题?
5
3 4
3 4
3 3
3 4
3 3
3 4
3 3
3 2
3 4
3 3
3 2
3 1
3 4
3 3
3 2
3 1
3 0
1
2
5 3 4
3 4
3 4
3 3
3 4
3 3
3 4
3 3
3 2
3 4
3 3
3 2
3 1
3 4
3 3
3 2
3 1
3 0
1
2
5 4 6
4 4
4 4
4 4
4 4
4 4
4 4
4 3
4 3
4 3
4 3
4 4
4 4
1
2
5 4 6
0
这是我所做的,我试图区分大小和其他方式,但仍然无法得到答案...
String line = "";
ArrayList<String> numbers= new ArrayList<String>();
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("input1.txt"));
int n = 0;
while ((sCurrentLine = br.readLine()) != null) {
String[] arr = sCurrentLine.split(" ");
int size = arr.length;
List<String> list = ConvertToList.convertArrayToList(arr);
List<Integer> listOfInteger = convert.convertStringListToIntList(list, Integer::parseInt);
if (list.size() == 2) {
line.split("\s+");
numbers.add(line.split("\s+")[0]);
System.out.println(numbers);
}
}
} catch(Exception e) {
e.printStackTrace();
}
您不需要再次拆分线。第一次拆分行时,检查结果数组的长度是否为 2
。如果是,请将 arr[1]
添加到 numbers
。
while ((sCurrentLine = br.readLine()) != null) {
String[] arr = sCurrentLine.split(" ");
if (arr.length >= 2) {
numbers.add(arr[1]);
System.out.println(numbers);
}
}
更新:
根据您的评论,我为您提供以下使用您的列表的代码:
while ((sCurrentLine = br.readLine()) != null) {
String[] arr = sCurrentLine.split(" ");
List<String> list = ConvertToList.convertArrayToList(arr);
List<Integer> listOfInteger = convert.convertStringListToIntList(list, Integer::parseInt);
if (listOfInteger.size() >= 2) {
numbers.add(listOfInteger.get(1));
}
}
System.out.println(numbers);
您可以将 System.out.println(numbers);
保留在 while
循环内部或外部,具体取决于您要如何打印 numbers
。
如果您只想读取和保存第二列而不是使用索引 1 获取第二列中的数据。(在 while 循环之后。)
String secondCol = sCurrentLine.split(" ")[1];
如果您在第 2 列中没有值,它将抛出您应该使用简单的 try catch 处理的异常。
最后将其转换为 int 并存储在您的列表中。与以下。
listOfInteger.add(Integer.parseInt(secoundCol));
希望它能奏效。
大家好,我下面有一个 txt 文件,我需要存储第二列数据,但它给了我一个错误,因为每行有 1 个输入,有些有 2 个输入,有些有 3 个输入。我该如何解决这个问题?
5
3 4
3 4
3 3
3 4
3 3
3 4
3 3
3 2
3 4
3 3
3 2
3 1
3 4
3 3
3 2
3 1
3 0
1
2
5 3 4
3 4
3 4
3 3
3 4
3 3
3 4
3 3
3 2
3 4
3 3
3 2
3 1
3 4
3 3
3 2
3 1
3 0
1
2
5 4 6
4 4
4 4
4 4
4 4
4 4
4 4
4 3
4 3
4 3
4 3
4 4
4 4
1
2
5 4 6
0
这是我所做的,我试图区分大小和其他方式,但仍然无法得到答案...
String line = "";
ArrayList<String> numbers= new ArrayList<String>();
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("input1.txt"));
int n = 0;
while ((sCurrentLine = br.readLine()) != null) {
String[] arr = sCurrentLine.split(" ");
int size = arr.length;
List<String> list = ConvertToList.convertArrayToList(arr);
List<Integer> listOfInteger = convert.convertStringListToIntList(list, Integer::parseInt);
if (list.size() == 2) {
line.split("\s+");
numbers.add(line.split("\s+")[0]);
System.out.println(numbers);
}
}
} catch(Exception e) {
e.printStackTrace();
}
您不需要再次拆分线。第一次拆分行时,检查结果数组的长度是否为 2
。如果是,请将 arr[1]
添加到 numbers
。
while ((sCurrentLine = br.readLine()) != null) {
String[] arr = sCurrentLine.split(" ");
if (arr.length >= 2) {
numbers.add(arr[1]);
System.out.println(numbers);
}
}
更新:
根据您的评论,我为您提供以下使用您的列表的代码:
while ((sCurrentLine = br.readLine()) != null) {
String[] arr = sCurrentLine.split(" ");
List<String> list = ConvertToList.convertArrayToList(arr);
List<Integer> listOfInteger = convert.convertStringListToIntList(list, Integer::parseInt);
if (listOfInteger.size() >= 2) {
numbers.add(listOfInteger.get(1));
}
}
System.out.println(numbers);
您可以将 System.out.println(numbers);
保留在 while
循环内部或外部,具体取决于您要如何打印 numbers
。
如果您只想读取和保存第二列而不是使用索引 1 获取第二列中的数据。(在 while 循环之后。)
String secondCol = sCurrentLine.split(" ")[1];
如果您在第 2 列中没有值,它将抛出您应该使用简单的 try catch 处理的异常。 最后将其转换为 int 并存储在您的列表中。与以下。
listOfInteger.add(Integer.parseInt(secoundCol));
希望它能奏效。