1
resposta

Código não funciona como o do professor

ao tentar executar esta versão do código

InputStream fis = System.in;
        Reader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);

        OutputStream fos = System.out;
        Writer osw = new OutputStreamWriter(fos);
        BufferedWriter bw = new BufferedWriter(osw);

        String linha = br.readLine();

        while (linha != null && !linha.isEmpty()) {
            bw.write(linha);
            bw.newLine();
            linha = br.readLine();
        }

        br.close();
        bw.close();

não obtenho o resultado esperado, ao escrever a segunda linha ele encerra meu programa inesperadamente... ao utilizar o flush() o código funciona da maneira correta, achei muito estranho. se for relevante estou usando jdk11

1 resposta

Gabriel, eu executei esse seu código e por aqui funcionou (usei a jdk19 e 20), talvez possa ser algum erro da versão, tente usar outra jdk para ver se o problema persiste. Mas assim, esse while só vai ser encerrado e imprimir na tela o conteúdo que você informou só após inserir uma linha em branco (apertar Enter duas vezes), com o flush() ele força ao compilador a mostrar o resultado inserido a cada envio e finalizando logo após enviar uma linha em branco.

Espero ter lhe ajudado com seu problema, um grande abraço!