В общем пока решил следующим образом:
public static Integer readWithTimeout(int secs) {
Integer answer_given = null;
Scanner in = new Scanner(System.in);
if (secs != 0) {
secs *= 1000;
BufferedReader inReader = new BufferedReader(new InputStreamReader(
System.in));
long time = System.currentTimeMillis();
try {
while (System.currentTimeMillis() - time < secs) {
if (inReader.ready()) {
answer_given = in.nextInt();
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
answer_given = in.nextInt();
}
return answer_given;
}
Другое дело что если во время одного вопроса написать число, но не добавить перенос строки, и во время одного из последующих вопросов нажать Enter, старый текст будет записан как ответ на текущий вопрос. Как очищать буфер от залежавшихся там символов?