Java + notepad++

Résolu/Fermé
romano - 12 nov. 2009 à 19:23
 romano - 14 nov. 2009 à 14:16
bonjour,

je suis en 1ère année de dut informatique et je fais de la programmation en cours (du Java)

je me suis donc arrangé pour pouvoir coder en Java chez moi (sous vista)... tout marche bien sauf un petit détail : les caractères spéciaux ne s'affichent pas (genre les accents...). du moins, ça n'affiche pas le bon caractère
par exemple, lorsque je fais mon programme et qu'à tel ou tel moment, y une phrase qui s'affiche avec un "é" quelque part, il m'affichera "ù" à la place... ce qui est gênant, mais à part ça, mon programme fonctionne comme il faut
est-ce que vous pourriez me dire une façon d'afficher ces caractères ? (j'ai vu qu'on pouvait les mettre en y mettant le code unicode, mais bon, c'est galère à la longue, je trouve)
donc voila, merci ^^

autre question qui peut paraître très con mais bon, tant pis. j'utilise notepad++ pour écrire mes programmes. je change les paramètres de coloration syntaxique et la police.... ùais je suis obligé de le refaire à chaque fois que je lance le programme. c'est normal ou c'est moi qui zappe un truc ?
merci aussi ^^
A voir également:

10 réponses

sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
12 nov. 2009 à 19:57
Hello,

Avant de lancer ton programme avec la commande java blabla, fais ceci: clic droit sur la barre de titre de ta console dos, propriétés, police et choisis lucinda console. Lance ton programme et regarde si c'est pareil ou pas.

Concernant notepad++: pas normal. Si ton fichier a une extension .java, notepad++ devrait avoir dès le départ et sans aucun effort de ta part la bonne coloration syntaxique... Essaie ceci: depuis windows explorer: clic croit / nouveau / fichier de type texte. F2 pour le renommer et change son extension en .java (faut travailler, bien sûr, avec affichage des extensions connues). Clic droit / ouvrir avec notepad++ et regarde si coloration okay.

En passant: pourquoi utiliser notepad++ et pas un IDE ? Cette dernière approche te ferait épargner un temps fou.

++
0
déjà, merci pour la réponse ^^

ensuite, j'ai changé la police de la console en celle que tu m'as indiquée mais ça n'y change rien =(

y parait que c'est une histoire d'encodage (UTF-8... ce genre de truc, mais j'avais déjà testé tout ce que notepad++ proposait, mais même résultat, pas de caractères spéciaux affichés)

en parlant de notepad++, merci pour ta réponse également, ça marche nickel ^^
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
12 nov. 2009 à 20:21
Oui, c'est une histoire d'encodage... Je n'ai jamais compris exactement le pourquoi et comment de cette affaire (et je me dis toujours que je devrais regarder). Et pas uniquement la sortie Java qui est limitée comme ça... D'autres programmes (comme sqlplus d'Oracle, par exemple) ont exactement le même comportement. Je me dis toujours que ce n'est pas important, vu que l'on ne distribue plus des applications console =)

En tout cas, le fait de basculer de raster vers lucinda résout le truc pour moi. Une autre idée serait de changer le code page de la console (commande DOS chcp)... M'enfin, je ne sais pas trop si l'histoire vaut la peine d'être explorée jusqu'au bout =)
0
lol eh bien en tout cas, merci beaucoup pour tes réponses ^^ ;)
0
j'ai une autre question concernant seulement java

voila le programme que j'ai fait en cours (j'explique très mal, c'est pour ça que je l'affiche ^^')

class Menu4 {
/*affiche un menupuis valide la commande de l'utilisateur*/

public static void main(String[] args) {

//valeur qu'entrera l'utilisateur pour choisir
char choix ;

//affichage du menu
System.out.println("\t1. café\n\t2. lait\n\t3. thé\n\t0. quitter") ;

//saisie du choix de l'utilisateur
choix=Console.readLine("choisissez un numéro pour votre boisson (0 pour quitter) : ").charAt(0) ;

//switch - pointe sur un choix particulier en fonction de la valeur entrée
switch (choix) {
case 'C' :
System.out.println("votre café est en préparation") ;
break ;
case 'c' :
System.out.println("votre café est en préparation") ;
break ;
case 'L' :
System.out.println("votre lait est en préparation") ;
break ;
case 'l' :
System.out.println("votre lait est en préparation") ;
break ;
case 'T' :
System.out.println("votre thé est en cours de préparation") ;
break ;
case 't' :
System.out.println("votre thé est en cours de préparation") ;
break ;
case 'Q' :
System.out.println("au revoir...") ;
break ;
case 'q' :
System.out.println("au revoir...") ;
break ;
default :
System.out.println("\t1. café\n\t2. lait\n\t3. thé\n\t0. quitter") ;
choix=Console.readLine("choisissez un numéro pour votre boisson (0 pour quitter) : ").charAt(0) ;
}
}
}

dans ce programme, je dois faire en sorte que si l'utilisateur entre un autre cas que ceux proposés, le programme réaffiche le menu avec une nouvelle saisie à faire

je compile ce programme, aucune erreur donc je le teste. lorsque le menu s'affiche, j'entre comme valeur, mettons 5. suivant le programme, le menu s'affiche une fois de plus et je dois faire une nouvelle saisie seulement là, quelque soit la saisie que je fais (qu'elle soit vrai ou fausse) le programme va simplement s'arrêter sans aucun autre message
est-ce que j'ai manqué quelque chose dans mon programme ? ^^' parce que je trouve pas comment régler ça (pas besoin de cherché à optimiser, je dois absolument utiliser le switch)

merci encore pour vos réponses
Cordialement
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
12 nov. 2009 à 21:45
et bien tu n'as pas fait de boucle, tu as juste remis le code pour demander une touche à la fin, je ne vois pas comment il pourrait recommencer...
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
12 nov. 2009 à 21:50
tu peux faire un truc du genre :

boolean recommencer;

do {

  ton code (affichage du menu et demande de touche)

  recommencer=false;
  switch(choix) {
    ...
    default:
    recommencer=true;
  }
} while(recommencer)
0
romano > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
12 nov. 2009 à 21:58
me disait bien qu'il y avait une histoire de boucle, mais j'allais chercher compliqué (avec un tant que)
je le voayis dans ce sens là. je teste et je dirai si ça marche. normalement oui ^^
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660 > romano
12 nov. 2009 à 22:07
j'ai bien mis un "tant que" ;)
do {...} while ()
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
c'est excellent ! merci beaucoup pour ton aide =D
0
A noter aussi que depuis la version 5, java a introduit l'objet Scanner. ( java.util.Scanner )
Console.writeline est donc obsolète.
0
Utilisateur anonyme
14 nov. 2009 à 03:09
Salut,
À propos de l'affichage des caractères accentués, j'ai une méthode qui permet de le faire.

Cette méthode >>> accents() <<< est incluse dans le programme compilable et exécutabe suivant:

   import java.io.Writer;
   import java.io.BufferedWriter;
   import java.io.OutputStreamWriter;
      // .......
      // .......

    public class LeProgramme 
   {
       // .......
       // .......
       // .......
   // pour la méthode accents()
      private static Writer w;
      private static String ligne_avec_accents = "";
   // plus géneralement
      private static String nL1;
      private static String nL2;
       // .......
       // .......
       
   // la méthode accents()
       public static void accents()
      {
         try
         {
            //  sortie à la console MSDOS avec les caractères accentués
            w = new BufferedWriter
                 (new OutputStreamWriter(System.out, "Cp850"));
            w.write(ligne_avec_accents);
            w.flush();
            
               //w.close(); Doit etre faite apres le dernier affichage,
               //donc en fin de programme (dans notre exemple en fin de méthode main(...
         }
             catch (Exception e)
            {
               e.printStackTrace();
            }
      }
   
   
       public static void main(String args[])
      {
         nL1 = System.getProperty("line.separator");
         nL2 = nL1;
         nL2 = nL2.concat(nL1);
         
      //Tu as ceci à afficher en utilisant la méthode accents():
         String phrase = "Pour l'affichage de caractères accentués à la console MSDOS:" + nL1
            + "utiliser la méthode accents().";
         System.out.println(nL1 + "Avec println: " + phrase);
      
      //Appel de la méthode:
         ligne_avec_accents = "Avec la méthode accents():" + nL1
            + phrase + nL2; // ou bien entendu:
         //ligne_avec_accents = "Avec la méthode accents():" + nL1
            //+ "Pour l'affichage de caractères accentués à la console MSDOS:" + nL1
            //+ "utiliser la méthode accents()" + nL2;
         accents();
         
      
      //Tu as ceci à afficher en utilisant la méthode accents():
         String laLigne = "Tu as ceci à afficher en utilisant la méthode accents().";
         System.out.println("Avec println: " + laLigne);
      
      //Appel de la méthode:
         ligne_avec_accents = "Avec la méthode accents():" + nL1
            + laLigne  + nL2;
        accents();
         
         // ou tout simplement:
         ligne_avec_accents = phrase + nL1 + laLigne  + nL1;
         accents();
      
              // .......
              // .......
              // .......
         //en fin de programme on ferme Writer:
         try
         {
            w.close();
         }
             catch (Exception e)
            {
               e.printStackTrace();
            }
         
      }  // FIN METHODE main
   }


Cordialement,

Dan
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
14 nov. 2009 à 12:07
Hello Dan,

Oui, le pagecode 850 permet effectivement d'afficher les caractères accentués. On pourrait aussi appeler chcp avant l'exécution du fichier Java. Exemple ci-après (je n'ai pas de fichier Java à exécuter, mais une simple commande dir dans un dossier avec un fichier nommé "ééé.txt" ==> remarquer l'affichage correct en cp = 850 et l'affichage incorrect si le cp = 1252: http://www.cijoint.fr/cjlink.php?file=cj200911/cijsJ4VZsM.png )

++
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
14 nov. 2009 à 12:11
[Edit] La méthode de Dan est certainement la voie à utiliser lorsqu'il s'agit d'une application à exécuter chez le client, car on ne va pas lui demander de changer son code page =) et

w = new BufferedWriter(new OutputStreamWriter(System.out, "Cp850"));
est fort pratique.
0
merci pour les réponses !

je me mets au boulot alors ^^ (comprendre et appliquer) ;)
0