Any ideas on why it doesn't meet the last requirement?
package com.codegym.task.task19.task1918;
/*
Introducing tags
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
//read input data
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
//String fileName = "C:\\Users\\ellen\\Google Drive\\privé\\becoming a developer\\Java CodeGym\\text.txt";
reader.close();
String tagName = args[0];
//String tagName = "span";
String tag = "<" + tagName;
String endTag = "</" + tagName + ">";
String line = "";
//read file into one string
BufferedReader br = new BufferedReader(new FileReader(fileName));
while (br.ready()) {
line = line + br.readLine();
}
br.close();
//find tags and store them in arraylists
ArrayList<Integer> startIndexes = new ArrayList<Integer>();
ArrayList<Integer> endIndexes = new ArrayList<>();
int start = 0;
int openIndex=0;
while (openIndex != -1) {
openIndex = line.indexOf(tag, start);
startIndexes.add(openIndex);
start = openIndex + tag.length();
}
startIndexes.remove(startIndexes.size()-1);
start = 0;
int closeIndex = 0;
while (closeIndex != -1) {
closeIndex = line.indexOf(endTag, start);
endIndexes.add(closeIndex);
start = closeIndex + endTag.length();
}
endIndexes.remove(endIndexes.size()-1);
//Print tags while emptying ArrayLists
int i = 0;
while (startIndexes.size()>i+1 && endIndexes.size()>0) {
if (startIndexes.get(i+1)>endIndexes.get(0)){
String between = line.substring(startIndexes.get(0), endIndexes.get(i)+endTag.length());
System.out.println(between);
startIndexes.remove(0);
endIndexes.remove(i);
i=0;
}
else if (startIndexes.get(i+1)<endIndexes.get(0)){
i++;
}
}
if (startIndexes.size()==1 && endIndexes.size()==1){
String between = line.substring(startIndexes.get(0), endIndexes.get(0)+endTag.length());
System.out.println(between);
}
}
}