Hello Guys I have a txt file below, I need to store the second column data but it gives me an error since some lines have 1 some have 2 and some have 3 input in each line. How can I solve that problem?
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
Here is what I did, I tried to differentiate as the size and in the other way but still cant get the answer...
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();
}
You do not need to split the line again. When you split the line first time, check if the length of the resulting array is 2
. If yes, add arr[1]
to numbers
.
while ((sCurrentLine = br.readLine()) != null) {
String[] arr = sCurrentLine.split(" ");
if (arr.length >= 2) {
numbers.add(arr[1]);
System.out.println(numbers);
}
}
Based on your comment, I am providing you following code which uses your lists:
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);
You can keep System.out.println(numbers);
inside or outside the while
loop depending on how you want to print numbers
.
If you want to read and save only the second column than you get the data in second column by using the index 1. (After your while loop.)
String secondCol = sCurrentLine.split(" ")[1];
In case you don't have a value in 2 column than it will throw and exception which you should handle with simple try catch. Finally convert it to int and store in your list. with following.
listOfInteger.add(Integer.parseInt(secoundCol));
Hopefully it will work.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.