82 votes

Comment faire fonctionner la touche de retour arrière \b dans la console d'Eclipse?

Je crée une petite application Java qui devrait avoir un indicateur de progression avec des pourcentages. À chaque boucle, il utilise le caractère de retour arrière \b pour supprimer la progression affichée avant d'afficher le pourcentage suivant.

Voici un exemple simplifié :

public static void main(String[] args) throws Exception {
    System.out.print("Progression : ");
    for (int pourcentage = 0; pourcentage < 100; pourcentage++) {
        System.out.print(pourcentage + "%");
        Thread.sleep(10); // Stub for "tâche longue".
        int longueur = String.valueOf(pourcentage).length() + 1;
        while (longueur-- > 0) {
            System.out.print('\b');
        }
    }
    System.out.println("terminé !");
}

Cela fonctionne parfaitement dans l'invite de commandes, mais le caractère de retour arrière n'est pas reconnu dans la console d'Eclipse (version Galileo build 20090920-1017). À la place, un carré vide représentant un caractère inconnu s'affiche. Voir capture d'écran :

texte alternatif

Comment puis-je faire en sorte qu'Eclipse affiche correctement le retour arrière ? C'est-à-dire le laisser supprimer le caractère précédent.

Ce n'est en réalité pas un obstacle, car cela sera simplement exécuté dans la console de commande, mais ce serait bien de le faire fonctionner également dans Eclipse :)

1 votes

Je vois les mêmes symptômes dans NetBeans

57voto

Mark Peters Points 42201

Bogue Eclipse #76936. Je ne compterais pas sur eux pour le réparer, et il n'y a pas de solutions de contournement répertoriées.

Vous pourriez avoir de la chance en trouvant un plugin qui contribue à une console plus avancée.

0 votes

Oh garçon, c'est un bug vieux de presque 6 ans. Merci d'avoir trouvé le rapport.

16 votes

Voir commentaire n°24 - "... l'équipe de débogage n'a actuellement pas le temps/les ressources pour travailler sur cela. Les contributions seraient grandement appréciées."

0 votes

Incroyable qu'ils ne l'aient pas corrigé. Il y a environ 20 bugs dupliqués/liés - semble être un fruit facile à attraper. La console Eclipse pourrie rend beaucoup d'autres choses nulles aussi - SBT/Scala/Groovy

8voto

EMurnane Points 221

Eh bien, il est vrai que vous ne pouvez pas utiliser la touche de retour arrière \ b pour supprimer la progression affichée, mais vous pourriez la supprimer en effaçant la console avec une boucle appelée println. Bien sûr, cette astuce ne effacera pas votre fichier journal !

0 votes

Effacer la console avec ...." Comment exactement ? println() ne peut pas effacer la ligne déjà imprimée sur la console!

1 votes

Cela peut pousser la sortie déjà imprimée vers le haut afin qu'elle sorte de la zone visible de la console, effaçant ainsi efficacement la console.

4voto

Павел Points 67

Maintenant, ils l'ont corrigé, mais c'est désactivé par défaut. Vous devriez l'activer via Interpréter les caractères de contrôle ASCII dans les préférences de la console.

0 votes

Cela a fonctionné dans Eclipse IDE pour les développeurs Java Version: 2019-12 (4.14.0). Merci

3voto

gagarwa Points 484

Correction, Eclipse Mars.

Remarque, je ne l'utiliserais pas pour des mises à jour constantes, car la console d'eclipse est en retard.

7 votes

Non corrigé dans Neon.3 (System.out.println("x\by")).

-4voto

Fisho2008 Points 5

Utilisez : System.out.print("\b ") à l'intérieur de la boucle while, au lieu de System.out.print('\b');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X