Comando que limpe automaticamente o console para evitar má estética

gostaria de saber um um comando que limpasse o console no java para utilizar na minha calculadora, ela deve apresentar o resultado

print.out.println(“sua resposta é”+i);
print.out.println(“deseja fechar? pressione z”);
print.out.println(“deseja recomeçar? pressione y”);

gostaria que tanto o comando z e o comando y limpassem o console

Vamos lá.

Primeiramente, print.out.println é algo novo pra mim. Você quis dizer System.out.println()?

Segundo lugar, isso é muito dependente. De IDE, de SO, de console pra console. Logo, o melhor mesmo seria você procurar bibliotecas gráficas como o Swing e o FX. Mas como você deve estar começando agora, vou te ensinar um macete para “limpar” o console.

for (int i=0; i < 20; i++){`
System.out.println();
}

Quando você ler Z ou Y (pelo Scanner), você chama esse for. Ele vai pular vinte linhas do console, jogando todas as coisas anteriores para cima e assim “apagando” as coisas. Você também pode ler sobre o \r, mas como eu disse, isso muda de ambiente para ambiente.

Se quiser alterar a quantidade de linhas puladas, basta mexer no segundo statement do for. Ele pulará linhas enquanto i for menor que X.

[]'s

Para limpar a tela são necessários recursos específicos do sistema operacional, Java não tem uma implementação pra isso.

O que você pode fazer é uma gambiarra específica pra cada sistema operacional.
No Windows por exemplo você pode chamar o comando CLS do DOS para limpar toda a tela.
Isso só vai funcionar quando executar o programa em linha de comando, no console da IDE não vai funcionar

Exemplo de um método limparTela();

private void limparTela() {
    String nomeSistema = System.getProperty("os.name").toLowerCase();
    if (nomeSistema.contains("windows")) {
        try {
            ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "cls");
            processBuilder.inheritIO();
            Process process = processBuilder.start();
            process.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
1 curtida

Só complementando, você pode usar a classe Robot também, assim que o usuário apertar Z, o robot tecla CTRL+L (se vc estiver utilizando NetBeans, esse comando limpa o console).

Realmente o sono e a pressa são inimigos mortais, foi apenas um erro de digitação. mas obrigado pela resposta.

entendi, então eu teria que fazer um if else para cada sistema operacional correto?

Eu tinha chego a este caso, porém, eu uso o Eclipse, que desconheço uma funcionalidade parecida à do NetBeans.

Ctrl + A e depois Backspace não funciona?