Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2460 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Pb affichage caractère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Pb affichage caractère

n°1053332
frenchlove​r
Posté le 20-04-2005 à 11:19:38  profilanswer
 

Salut tout le monde,
voila mon problème : J'ai fais un programme pour crypter les mots. Oui, bon, rien de bien original, mais je débute. Le programme fonctionne, mais le problème se situr au niveau du résultat.
Quand je retourne le résultat sur la sortie standard, j'ai bien tous mes caractères, mais quand je veux les afficher dans une fenêtre graphique, certain caractères sont remplacé par un carré.
 
Est-ce dû au propriété de "JOptionPane.showMessageDialog" ? Est-il possible de corriger cela ?
 
Merci d'avance pour votre aide.
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import javax.swing.JOptionPane;
  5. import javax.swing.JDialog;
  6. class CryptoTexte{
  7. public static String lireChaine(String message){
  8.  String valeur=null;
  9.  boolean ok=true;
  10.  while(ok){
  11.   String saisie=JOptionPane.showInputDialog(message);
  12.   if (saisie==null)System.exit(0);
  13.   try{
  14.    valeur=saisie;
  15.    ok=false;
  16.   }
  17.   catch(Exception exc){JOptionPane.showInputDialog("erreur" );
  18.   }
  19.  }
  20.  return valeur;
  21. }
  22. public static String Crypto(String Message){
  23.  String mot=null;
  24.  String masque=null;
  25.  String MotCrypter="";
  26.  int taillemot=0;
  27.  int taillemasque=0;
  28.  do{
  29.   mot=lireChaine("Taper le mot à crypter / decrypter :" );
  30.  }while(mot==null);
  31.  taillemot=mot.length();
  32.  while(taillemasque!=taillemot){
  33.   masque=lireChaine("Taper un masque de "+taillemot+" caractères !" );
  34.   taillemasque=masque.length();
  35.  }
  36.  char[] Tableau1 = mot.toCharArray();
  37.  char[] Tableau2 = masque.toCharArray();
  38.  int z=0;
  39.  System.out.print("Le mot crypter est : " );
  40.  while (z<taillemot){
  41.   char a=(char)(Tableau1[z]^Tableau2[z]);
  42.   z=z+1;
  43.   MotCrypter=MotCrypter+a;
  44.  }
  45.  System.out.println(MotCrypter);
  46.  return MotCrypter;
  47. }
  48. public static void showMessageDialog(){
  49.  String Chiffrer=Crypto("Le message crypté est :" );
  50.  JOptionPane.showMessageDialog(null,Chiffrer);
  51. }
  52. public static void main (String[] arg){
  53.  showMessageDialog();
  54. }
  55. }


Message édité par frenchlover le 20-04-2005 à 11:20:56

---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
mood
Publicité
Posté le 20-04-2005 à 11:19:38  profilanswer
 

n°1053756
phnatomass
Je m'empare de ton esprit !!
Posté le 20-04-2005 à 16:10:02  profilanswer
 

De toute façon ton algo génère des caractères non imprimables sous windows. C'est le Dos qui a une plus grande palette de caractères imprimables. Si tu souhaites que le mot crypté soit lisible il faut modifier ton algo

n°1054781
frenchlove​r
Posté le 21-04-2005 à 08:38:05  profilanswer
 

Et comment est-ce que je peux faire ça ?
 
Je rappel que je suis un newbie :sweat: en programmation. Ca ne fais qu'un mois que j'en fais. Et les TP que j'ai eu en cour sont pultôt basique (du genre afficher un mot, faire un programme qui retourne les nombres pairs...).
 
J'essai d'aller plus loin par moi même, donc tous les conseils constructifs sont les bien venu.


---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
n°1056872
tuxbleu
renie ses origines
Posté le 22-04-2005 à 16:17:59  profilanswer
 

Vérifie peut-etre que ton char est un chiffre ou une lettre, avec une méthode style isDigit(), ou isNumber().  
Les chiffres et les lettres, ca c'est imprimable à coup sur ;)

n°1056974
benou
Posté le 22-04-2005 à 17:07:55  profilanswer
 

1) regarde du côté de MessageDigest et de l'algo MD5
2) une méthode simple pour être sûr d'avoir des données affichable c'est de les réencoder en Base 64 derrière
3) la concaténation de caractères dans une boucle ca se fait avec StringBuffer ou StringBuilder, mais pas avec l'opérateur + sinon les perfs sont désastreuse.

n°1059546
frenchlove​r
Posté le 25-04-2005 à 11:29:46  profilanswer
 

Tuxou -> Le but est justement de ne pas avoir forcement que des caractères et  
         des chiffres, mais aussi tous les symboles.  ;)  
 
Benou -> Je comprend pas trop ce que tu veux dire avec StringBuffer et +. C'est le "z=z+1" ou le "char a=(char)(Tableau1[z]^Tableau2[z]); " qui n'est pas bon ?
 
Sinon, n'est-il pas possible de ressortir la valeur dans un jtextfield ? Est-ce que cela ne permettrais pas d'avoir tous les caractères ?


Message édité par frenchlover le 25-04-2005 à 11:30:31

---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
n°1059555
benou
Posté le 25-04-2005 à 11:38:03  profilanswer
 

c'est le MotCrypter=MotCrypter+a; qui devrait être remplacé par un append dans un StringBuffer


---------------
ma vie, mon oeuvre - HomePlayer

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Pb affichage caractère

 

Sujets relatifs
créer un répertoire en javacopier-coller en java
Java - Symbole €formulaire et java
Excel to Javaavoir une aide en programmation java
Affichage d'un pixelaffichage des services en java
Gestion des fichiers en java 
Plus de sujets relatifs à : [JAVA] Pb affichage caractère


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR