Probleme d'affichage

Probleme d'affichage - Java - Programmation

Marsh Posté le 07-12-2007 à 18:56:08    

Bonjour à tous,
 
Etant novice dans la programmation et encore plus en java, j'aurais besoin de votre aide.
 
Je veux mettre au point une petite interface graphique dans laquelle j'ai des zones de saisies dans lesquelles je rentre des décimal.
Je veux par la suite appliqué à la valeur de ce champ (JTextField) une conversion me donnant le binaire de cette valeur.
 
J'ai mon interface et mon code de conversion mais lorsque j'apelle celui-ci(conversion), ça refuse de lancer l'application.
Je pense que je ne renvoie pas correctement la valeur.
 
Voici les erreurs générées sous Eclipse :

Code :
  1. Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
  2. at cidr.Affichage.Conversion(Affichage.java:121)
  3. at cidr.Affichage.actionPerformed(Affichage.java:101)
  4. at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
  5. at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
  6. at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
  7. at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
  8. at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
  9. at java.awt.Component.processMouseEvent(Unknown Source)
  10. at javax.swing.JComponent.processMouseEvent(Unknown Source)
  11. at java.awt.Component.processEvent(Unknown Source)
  12. at java.awt.Container.processEvent(Unknown Source)
  13. at java.awt.Component.dispatchEventImpl(Unknown Source)
  14. at java.awt.Container.dispatchEventImpl(Unknown Source)
  15. at java.awt.Component.dispatchEvent(Unknown Source)
  16. at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
  17. at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
  18. at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
  19. at java.awt.Container.dispatchEventImpl(Unknown Source)
  20. at java.awt.Window.dispatchEventImpl(Unknown Source)
  21. at java.awt.Component.dispatchEvent(Unknown Source)
  22. at java.awt.EventQueue.dispatchEvent(Unknown Source)
  23. at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
  24. at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
  25. at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
  26. at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  27. at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  28. at java.awt.EventDispatchThread.run(Unknown Source)


 
voici la methode conversion
 

Code :
  1. public String Conversion(String val){
  2.  int a = Integer.parseInt(val);
  3.  int i;
  4.  int reste = 0;
  5.  String R=" ";
  6.  int tab[] = new int[8];
  7.  for (i=0;i<tab.length;i++){
  8.   tab[i]=0;
  9.  }
  10.  while(a!=0){
  11.   reste=a%2;
  12.   a=a/2;
  13.   tab[tab.length-i-1]=reste;i++;
  14.   }
  15.  for (i=0;i<tab.length;i++){
  16.   R += tab[tab.length-i-1];
  17. }
  18.  return R;
  19. }


 
Voici ce que j'utilise pour afficher

Code :
  1. public void actionPerformed(ActionEvent e){
  2.  if(e.getSource() == bouton){
  3.   label1.setText(Conversion(val1.getText()));
  4. }


 
Pourriez vous m'aider car je ne comprend pas l'erreur sauf que ces dût à un probleme d'évènement.
 
Merci d'avance,
 
Cordialement.

Reply

Marsh Posté le 07-12-2007 à 18:56:08   

Reply

Marsh Posté le 07-12-2007 à 19:17:35    

Citation :

java.lang.ArrayIndexOutOfBoundsException: -1


Non, tu te viandes dans les index de tableaux.

Reply

Marsh Posté le 07-12-2007 à 19:23:51    

oula,pourrais tu éclairer ma lanterne stp

Reply

Marsh Posté le 07-12-2007 à 19:50:52    

Effectivement j'avais un probleme d'index, merci de ta remarque, je n'avais qu'a mieux lire.
 
En revanche maintenant cela fonctionne mais lorsque je saisi une valeur autre que 0, cela me renvoi toujours 11111111 au lieu de me donner la valeur binaire.
Je pense que la aussi j'ai un pb d'insertion de donner.
Voici le nouveau code  

Code :
  1. public String Conversion(String val){
  2.  int a = Integer.parseInt(val);
  3.  int i =0;
  4.  int reste = 0;
  5.  String R=" ";
  6.  int tab[] = new int[8];
  7.  for (i=0;i<tab.length;i++){
  8.   tab[i]=0;
  9.  }
  10.  while(a!=0){
  11.   reste=a%2;
  12.   a=a/2;
  13.   for(i=0;i<tab.length;i++){
  14.   tab[(tab.length)-i-1]=reste;
  15.   }
  16.  }
  17.  for (i=0;i<tab.length;i++){
  18.   R = R+tab[(tab.length)-i-1];
  19.  }
  20.  return R;
  21. }

Reply

Marsh Posté le 07-12-2007 à 20:32:32    

akalaan a écrit :


En revanche maintenant cela fonctionne mais lorsque je saisi une valeur autre que 0, cela me renvoi toujours 11111111 au lieu de me donner la valeur binaire.


c'est peut etre parce que tu ne fais pas une conversion binaire tout simplement!
Revoi ton algorithme et essaie le avec de petit chiffre par exemple 5! le probleme est dans ta premiere boucle 'for' il me semble!


Message édité par breizhbugs le 07-12-2007 à 20:51:06
Reply

Marsh Posté le 12-12-2007 à 13:52:40    

Re bonjour à tous,
 
J'ai finalement reussi par convertir de décimal à binaire mais maintenant je voudrais savoir si il est possible de passer tous les elements d'un tableau dans un String.
 
CAD, si mon tableau[8] est composé de 1 et de 0, est il possible de passer tous les élements dans un String pour pouvoir afficher les 1 et 0, car ma méthode renvoi un String.
 
Merci d'avance,
 
 
Voici le code de ma méthode, quand j'affiche le tableau avec un SOP ça affiche ce que je veut.
 

Code :
  1. public String ConversionDecToBin(String s){
  2.  String test ="";
  3.  int a = Integer.parseInt(s);
  4.  int b=0,i,j=0,k,reste=0;
  5.  int[] tab = new int[8];
  6.  for(i=0;i<tab.length;i++)
  7.   tab[i]=0;
  8.  while(a>0){
  9.   reste = a%2;
  10.   tab[j]=reste;
  11.   j++;
  12.   a=a/2;
  13.  }
  14.  for (k=0;k<tab.length;k++)
  15.   System.out.println(tab[k]);
  16.  return test;
  17. }

Reply

Marsh Posté le 12-12-2007 à 14:22:09    

Bon et bien fianelement j'ai trouvé.
 
voici ma solution

Code :
  1. for (k=0;k<tab.length;k++)
  2.   test=test.concat(String.valueOf(tab[k]));
  3.  return test;


 
Merci quand même

Reply

Marsh Posté le 12-12-2007 à 14:55:06    

StringBuffer c'est bien aussi.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed