[j2me] conversion cel->fahr, fahr->cel pour mobile (premier midlet)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 037 fois - Téléchargée 35 fois

Contenu du snippet

Conversion Celsius -> Fahreinet et Farheneit->Celsius pour mobile. Vous tapez un chiffre et vous choisissez quel type de conversion vous voulez faire.
Il s'agit de mes premiers pas dans le domaine du JAVA et du MIDlet. Donc si vous avez des suggestions et autres remarques ça serait cool de me les dire pour me permettre d'avancer.
J'espère que ça pourra peut-être aider des personnes qui commencent dans le domaine du J2ME.

Source / Exemple :


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class CelFarConvMIDlet extends MIDlet implements CommandListener {
 
  private Display display;
  private Form FirstForm, cfForm, fcForm;
  private Command exitCommand, backCommand, cfCommand, fcCommand;
  private TextField valeur, resultatCF,resultatFC;
  double res = 0.0;
  
  public CelFarConvMIDlet() 
  {
   
      display = Display.getDisplay(this);
    
     /* creation de la form 'FirstForm' */
     FirstForm = new Form("Training");
     
     /* TexteField 'valeur' en mode decimal uniquement */
     valeur = new TextField("Tapez votre valeur à convertir : ","",5,TextField.DECIMAL);
      
     
     /* creation de commandes exit et des 2 conversions */
     exitCommand = new Command ("Exit", Command.EXIT, 1);
     cfCommand = new Command("Celsius -> Farheneit",Command.SCREEN,2);
     fcCommand = new Command ("Farheneit -> Celsius", Command.SCREEN, 3);
    
     /* ajout des 3 commandes et du textefield 'valeur' dans 'FirstForm' */
     FirstForm.addCommand(exitCommand);
     FirstForm.addCommand( cfCommand);
     FirstForm.addCommand( fcCommand);
     FirstForm.append(valeur);
     FirstForm.setCommandListener(this);
    
     /* creation de la form cfForm (cf = CelsiusFahrenheit) */
     cfForm = new Form("Celsius -> Fahrenheit");
     
     /* creation de la TexteField 'resultatCF' pour y afficher le resultat */
     resultatCF = new TextField("Resultat : ","",10,TextField.UNEDITABLE);
    
     /* creation de la commande Back */
     backCommand = new Command ("Back", Command.BACK,1);
     
     /* ajout de la commande Back et du texteField 'resultatCF' dans la form 'cfForm'  */ 
     cfForm.append(resultatCF);
     cfForm.addCommand(backCommand);
     cfForm.setCommandListener(this);
    
     /* creation de la form 'fcForm' (fc = FahrenheitCelsius) */
     fcForm = new Form("Fahrenheit -> Celsius");
     
     /* creation de la TexteField 'resultatCF' pour y afficher le resultat */
     resultatFC = new TextField("Resultat : ","",10,TextField.UNEDITABLE);
        
     /* ajout de la commande Back et du texteField 'resultatFC' dans la form 'fcForm' */    
     fcForm.append(resultatFC);
     fcForm.addCommand(backCommand);
     fcForm.setCommandListener(this);
    
  }
    
    public void startApp() 
    {
        /* affichage de la form FirstForm */
        display.setCurrent(FirstForm);
    }
    
    public void pauseApp() {
    }
    
    public void destroyApp(boolean unconditional) {
    }
    public void commandAction(Command c, Displayable s) {
       
      /* si la commande exit est appelé, on sort du programme  */
      if (c == exitCommand)
          {
           destroyApp(false);
           notifyDestroyed();
          }
      
      /* si la commande cf est appelé, */
      /* on commence le processus de conversion : */
      /* Celsius -> Fahrenheit */
      else if (c == cfCommand)
        {
            CeFa();
        }
      
      /* si la commande cf est appelé, */
      /* on commence le processus de conversion : */      
      /* Fahrenheit -> Celsius  */
      else if (c == fcCommand)
        {
            FaCe();
        }
      
       /* si la commande back est appelé, */
       /* on efface ce qu'il y a dans le textefield 'valeur' et on revient au début */
      else if ( c == backCommand )
      {
          valeur.delete(0, valeur.size());
          display.setCurrent(FirstForm);
      }
     
  }

    private void CeFa()
    {
       
       double n1 = getNumber(valeur);
       res = ((9.0/5.0) * n1) + 32.0;
              
       /* double to string */
       String res_to_str1 = Double.toString(res);
       
       /* si la taille de res_to_str est + grand que resultatCF */
       /* il nous faut reajuster sa taille */
       if (res_to_str1.length() > resultatCF.getMaxSize()) 
       {
            resultatCF.setMaxSize(res_to_str1.length());
       }
       
       resultatCF.setString(res_to_str1);
       display.setCurrent(cfForm);
    }
   
    private void FaCe()
    {
       
       double n1 = getNumber(valeur);
       res = ((5.0/9.0)* (n1 - 32.0));
      
       /* double to string */
       String res_to_str2 = Double.toString(res);
       
       /* si la taille de res_to_str est + grand que resultatFC */
       /* il nous faut reajuster sa taille */
       
       if (res_to_str2.length() > resultatFC.getMaxSize()) 
       {
            resultatFC.setMaxSize(res_to_str2.length());
       }
       
       resultatFC.setString(res_to_str2);
       display.setCurrent(fcForm);
    }
       
     /* conversion du string (situé dans le textefield 'valeur') en nombre (double)  */    
     private double getNumber(TextField t)
     {
        String s = t.getString();
        double n = Double.parseDouble(s);
        return n;
     }
     
}

Conclusion :


Vous pouvez le lancer avec l'émulateur de sun, le KToolbar.
En ce qui concerne la partie getNumber, je l'ai repris de l'exemple du calcultor de sun. Ca m'avait l'air d'être le meilleur compromis pour convertir le string en nombre.
Voila voila n'hésitez pas pour vos commentaires.

ShinJava : petit débutant qui deviendra grand.... débutant :)

MAJ : (j'ai oublié de préciser la version MIDP et CLDC).
Version MIDP : 2.0
Version CLDC : 1.1 (ne marche pas pour les version antérieures qui ne prennent pas en compte le TextField.DECIMAL et TextField.UNEDITABLE)

A voir également

Ajouter un commentaire Commentaires
Messages postés
4
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
4 janvier 2009

salut j'est copier to prog mais je n'arrive pas à le faire marcher ? !
j(ai installer jdk 1.5.0_02 et j2me_wireless_toolkit-2_2-windows
mai le sel problème qui ne connais pas Double.Tostring ( la fonction qui convertie un double en string
je veus commun je peu faire Merci pour le tui.
Messages postés
112
Date d'inscription
vendredi 27 octobre 2000
Statut
Membre
Dernière intervention
26 janvier 2011
2
sait tu ou trouver la fonction log (logarithme) dans les api j2me ?
je ne l'ai pas trouvé dans la classe Math...
Messages postés
3
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
27 mars 2009

c cool , n'hesite pas faire d'autre programe de ce genre !!!!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.