java code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
String inputData = "Z99@MDNET0145J8391750181750300 XQ000310 00145\n" +
"EOF@MDNET0145 XQ000310000001\n" +
"Z99@MDNET0145J8391750137576400 XQ000310 00145\n" +
"C1120712641 375764002023062983917501 000000000 0000000014987439072388 0000600000004650000000001\n" +
"C1113062901471817503132023062983917501 0000000014987439076607 0000120000000000000000002\n" +
"C1113062901471817503132023062983917501 0000000014987439076607 0000120000000000000000002\n" +
"EOF@MDNET0145 XQ000310000001";
BufferedReader reader = new BufferedReader(new StringReader(inputData));
String line;
List<String> cLines = new ArrayList<>();
try {
while ((line = reader.readLine()) != null) {
line = line.trim();
cLines.add(line);
}
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i < cLines.size(); i++) {
String cLine = cLines.get(i);
// Check if the current line starts with 'C' and the previous line starts with 'Z'
if (cLine.startsWith("C") && i > 0 && cLines.get(i - 1).startsWith("Z")) {
System.out.println(cLines.get(i - 1));
System.out.println(cLine);
// Check if the current line starts with 'C' and the next line starts with 'E'
if (i < cLines.size() - 1 && cLines.get(i + 1).startsWith("E")) {
System.out.println(cLines.get(i + 1));
}
}
// Check if the current line starts with 'C' and the next line starts with 'E'
else if (cLine.startsWith("C") && i < cLines.size() - 1 && cLines.get(i + 1).startsWith("E")) {
System.out.println(cLine);
System.out.println(cLines.get(i + 1));
}
// Display all C lines
else if (cLine.startsWith("C")) {
System.out.println(cLine);
System.out.println("");
}
}
}
}
------------------------
groovy code
def inputData = """Z99@MDNET0145J8391750181750300 XQ00031000145
EOF@MDNET0145 XQ000310000001
Z99@MDNET0145J8391750137576400 XQ000310 00145
C1120712641 375764002023062983917501 000000000 0000000014987439072388 0000600000004650000000001
C1113062901471817503132023062983917501 0000000014987439076607 0000120000000000000000002
C1113062901471817503132023062983917501 0000000014987439076607 0000120000000000000000002
EOF@MDNET0145 XQ000310000001"""
def cLines = []
inputData.eachLine { line ->
line = line.trim()
cLines << line
}
for (int i = 0; i < cLines.size(); i++) {
def cLine = cLines[i]
// Check if the current line starts with 'C' and the previous line starts with 'Z'
if (cLine.startsWith("C") && i > 0 && cLines[i - 1].startsWith("Z")) {
println(cLines[i - 1])
println(cLine)
// Check if the current line starts with 'C' and the next line starts with 'E'
if (i < cLines.size() - 1 && cLines[i + 1].startsWith("E")) {
println(cLines[i + 1])
}
}
// Check if the current line starts with 'C' and the next line starts with 'E'
else if (cLine.startsWith("C") && i < cLines.size() - 1 && cLines[i + 1].startsWith("E")) {
println(cLine)
println(cLines[i + 1])
}
// Display all C lines
else if (cLine.startsWith("C")) {
println(cLine)
println("")
}
}