Не джавист, но в цикле можно сразу добавлять строку в массив, а не в стрингбилдер, тогда и сплит не понадобится. Если же имелось ввиду, что все строки будут обрабатываться как единая String, то было бы лучше получать строку с интами из общей String с помощью метода выделения подстроки какого-нибудь, для этого надо будет запомнить длины соответствующих строк, чтобы найти индексы начала и конца 2х подстрок.
P.S. Прочитал задачу, тут можно еще проще сделать:
intString0 = bufferedReader.readLine();
intString1 = bufferedReader.readLine();
intString2 = bufferedReader.readLine();
int Q = SomeAnalyzer(intString0);
String[] hands;
int i = 0;
while (i < Q) {
hands.SomeAppendMethod(bufferedReader.readLine());
i += 1;
}
Еще проще было бы читать из потока ввода сразу в переменные M, N, Q и т.д. Но, видимо, у автора была причина так не делать.
Надеюсь, кому-то будет полезно, кто решает такие задачи.