findInLine
останавливается, когда встречается разрыв строки (как следует из названия):
" \t\n a"
^^^^
|
+-- this is where findInLine(...) searches for the pattern: `\s*a`
Вы должны использовать findWithinHorizon(...)
вместо:
String pattern = "\\s*a";
Scanner scanner1 = new Scanner(" \t a");
Scanner scanner2 = new Scanner(" \t\n a");
System.out.printf(">%s<\n\n", scanner1.findInLine(pattern));
System.out.printf(">%s<", scanner2.findWithinHorizon(pattern, 0));
напечатает:
> a<
>
a<