O valor de input “s” e “n” não são valores booleanos, por isso eles não são convertidos como você espera.
hugokotsubo2 likes
Se vc digitar somente “s” ou “n”, hasNextBoolean() vai retornar false.
Uma dica: sempre leia a documentação de tudo que vai usar. Veja aqui que hasNextBoolean() só retorna true se o que foi digitado pode ser convertido para boolean (sendo mais específico, ele só aceita que você digite “true” ou “false”).
No seu caso, se você quer que a pessoa digite “s” ou “n”, então deveria usar nextLine():
Stringopcao=sc.nextLine();if("s".equals(opcao)){// tem filhos}// ou, se só quiser imprimirSystem.out.println("Tem filhos: "+"s".equals(opcao));