[JAVA] Conversion
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

[JAVA] Conversion



  1. #1
    Mcflys

    [JAVA] Conversion


    ------

    Bonjour à toutes et à tous,

    j'essaye de convertir un nombre entier en nombre binaire.
    J'ai déjà trouvé l'algorithme.

    // pour avoir du binaire il faut diviser par 2 autant de fois jusqu'à ce que ça soit plus divisible par 2.
    // le reste de la division (modulo) est lu dans le sens du bas vers le haut. elle sera forcement stocké dans un tableau.
    Le problème est que je n'arrive pas à la traduire en langage JAVA. (Je débute)
    Voici ce que j'ai fait:


    Code PHP:
    public class TEST {

        
    /**
         * @param args
         */
        
            
    public static void main(String[] args) {

                
    bina(15); //j'ai essayé de prendre un exemple simple
                
            
    }
        
            private static 
    void bina(int chiffre){
            
    int []tab;
            
    int compteur=0;
            
    tab=new int[compteur];
            while(
    chiffre%2==0||chiffre%2==1){
            
                    
    tab[compteur]=chiffre%2;
                    
    compteur++;   // pour construire mon tableau au fur et à mesure
                    
    chiffre=(int)chiffre/2//pour prendre la partie entière
                    
                        
                
    }
                
    afficher(tab);    
                }

                
        private static 
    void afficher(int []tab){
        for(
    int i=0;i<tab.length;i++){
            
    System.out.println(" "+tab[i]);
        }
    }

    Après, mon autre problème est de revenir "arrière" (avec un boucle for, est ce possible ?)
    et la synthaxe en Java, car pour afficher par exemple "1", il sera écrit "1.0"

    Merci de votre aide.

    -----

  2. #2
    invite4492c379

    Re : [JAVA] Conversion

    Citation Envoyé par Mcflys Voir le message
    Bonjour à toutes et à tous,

    j'essaye de convertir un nombre entier en nombre binaire.
    J'ai déjà trouvé l'algorithme.



    Le problème est que je n'arrive pas à la traduire en langage JAVA. (Je débute)
    Voici ce que j'ai fait:


    Code PHP:
    public class TEST {

        
    /**
         * @param args
         */
        
            
    public static void main(String[] args) {

                
    bina(15); //j'ai essayé de prendre un exemple simple
                
            
    }
        
            private static 
    void bina(int chiffre){
            
    int []tab;
            
    int compteur=0;
            
    tab=new int[compteur];
            while(
    chiffre%2==0||chiffre%2==1){
            
                    
    tab[compteur]=chiffre%2;
                    
    compteur++;   // pour construire mon tableau au fur et à mesure
                    
    chiffre=(int)chiffre/2//pour prendre la partie entière
                    
                        
                
    }
                
    afficher(tab);    
                }

                
        private static 
    void afficher(int []tab){
        for(
    int i=0;i<tab.length;i++){
            
    System.out.println(" "+tab[i]);
        }
    }

    Après, mon autre problème est de revenir "arrière" (avec un boucle for, est ce possible ?)
    et la synthaxe en Java, car pour afficher par exemple "1", il sera écrit "1.0"

    Merci de votre aide.
    Hello,

    diviser par 2 tant que c'est possible signifie tant que le nombre>0. Ta conditionnelle dans le while sera toujours vraie ...

    Si tu fais la trace tu vois rapidement l'erreur.

  3. #3
    Mcflys

    Re : [JAVA] Conversion

    Bonjour,
    merci d'avoir répondu.
    Si tu fais la trace tu vois rapidement l'erreur
    La trace ? Vous voulez parler de l'exécution ?
    Il est vrai qu'il y a un message d'erreur (je suis sous ECLISPE)

    Code PHP:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException0
        at exercicevert1
    .bina(exercicevert1.java:20)//qui renvoie à   tab[compteur]=chiffre%2;
        
    at exercicevert1.main(exercicevert1.java:10)//qui renvoie à bina(15); 
    diviser par 2 tant que c'est possible signifie tant que le nombre>0. Ta conditionnelle dans le while sera toujours vraie ...
    Oui, je suis d'accord, ça sera une boucle infini mais la vôtre aussi, non ? ("tant que le nombre>0, C'est toujours vrai à condition que le chiffre de départ soit positif.

    Qu'en pensez vous ?

    Sinon, j'ai cherché une autre condition:
    Code PHP:
    public class exercicevert1 {

        
    /**
         * @param args
         */
        
        
        
    public static void main(String[] args) {
            
    int chiffre=15;
            
    int []tab;
            
    int compteur=0;
            
    tab=new int[compteur];
            while(
    chiffre!=0){  //tant que la partie entière du quotient n'est pas égal à 0
            
                    
    tab[compteur]=chiffre%2;
                    
    compteur++;   // pour construire mon tableau au fur et à mesure
                    
    chiffre=(int)chiffre/2//pour prendre la partie entière
                    
                        
            
    }
            
            for(
    compteur=0compteur <tab.length;compteur++){
              
    System.out.print(" "+tab[compteur]);                    //j'affiche mon tableau avec 
                                                                          //le code binaire
            
    }
        }


    Je met la condition suivante : "tant que la partie entière du quotient n'est pas égal à 0"
    Avec le chiffre 15, cela donne

    15=2*7+1
    7=2*3+1
    3=2*1+1
    1=2*0.5+2 et là comme la partie entière est 0, ont s'arrête.

    Mais j'ai cependant toujours un message d'erreur.
    Code PHP:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException0
        at exercicevert1
    .main(exercicevert1.java:15// qui renvoie tab[compteur]=chiffre%2; ) 

    Je ne comprend pas où est le problème, apparemment, je suis sortie des limites de mon tableau.

    Merci de votre aide et de vos explications.

  4. #4
    invite4492c379

    Re : [JAVA] Conversion

    Citation Envoyé par Mcflys Voir le message
    Bonjour,
    merci d'avoir répondu.

    La trace ? Vous voulez parler de l'exécution ?
    Non sur un exemple comme celui-ci on fait une trace avec du papier et un crayon, éventuellement si c'est déjà codé via le debugger et des watchs ...

    Citation Envoyé par Mcflys Voir le message
    Il est vrai qu'il y a un message d'erreur (je suis sous ECLISPE)

    Code PHP:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException0
        at exercicevert1
    .bina(exercicevert1.java:20)//qui renvoie à   tab[compteur]=chiffre%2;
        
    at exercicevert1.main(exercicevert1.java:10)//qui renvoie à bina(15); 

    Oui, je suis d'accord, ça sera une boucle infini mais la vôtre aussi, non ? ("tant que le nombre>0, C'est toujours vrai à condition que le chiffre de départ soit positif.

    Qu'en pensez vous ?
    exact ... sauf si on fait des divisions entières. Si le nombre de départ est négatif c'est problématique. Quelle représentation utiliser ? Complément à 1, à 2 ?

    Citation Envoyé par Mcflys Voir le message

    Sinon, j'ai cherché une autre condition:
    Code PHP:
    public class exercicevert1 {

        
    /**
         * @param args
         */
        
        
        
    public static void main(String[] args) {
            
    int chiffre=15;
            
    int []tab;
            
    int compteur=0;
            
    tab=new int[compteur];
            while(
    chiffre!=0){  //tant que la partie entière du quotient n'est pas égal à 0
            
                    
    tab[compteur]=chiffre%2;
                    
    compteur++;   // pour construire mon tableau au fur et à mesure
                    
    chiffre=(int)chiffre/2//pour prendre la partie entière
                    
                        
            
    }
            
            for(
    compteur=0compteur <tab.length;compteur++){
              
    System.out.print(" "+tab[compteur]);                    //j'affiche mon tableau avec 
                                                                          //le code binaire
            
    }
        }


    Je met la condition suivante : "tant que la partie entière du quotient n'est pas égal à 0"
    Avec le chiffre 15, cela donne

    15=2*7+1
    7=2*3+1
    3=2*1+1
    1=2*0.5+2 et là comme la partie entière est 0, ont s'arrête.

    Mais j'ai cependant toujours un message d'erreur.
    Code PHP:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException0
        at exercicevert1
    .main(exercicevert1.java:15// qui renvoie tab[compteur]=chiffre%2; ) 

    Je ne comprend pas où est le problème, apparemment, je suis sortie des limites de mon tableau.

    Merci de votre aide et de vos explications.
    Disons que l'initialisation du tableau est un peu légère ...

    Code:
            int compteur=0;
            tab=new int[compteur];
    Un tableau à 0 élément ? Autant l'initialiser avec une taille de 32, si je me souviens les int en java sont des entiers 32bits.

  5. A voir en vidéo sur Futura
  6. #5
    Mcflys

    Re : [JAVA] Conversion

    Bonjour,

    exact ... sauf si on fait des divisions entières.
    Non, je ne vous suis pas. Une division d'entier positif donnera toujours un entier positif
    Si le nombre de départ est négatif c'est problématique. Quelle représentation utiliser ? Complément à 1, à 2 ?
    Pour l'instant, je me restreint au entier puis après je travaillerais avec les négatifs.

    Code PHP:
    Un tableau à 0 élément 
    Oui, j'ai mis un tableau à une case, mais après la taille augmente grâce à l'incrémentation de mon compteur.
    J'ai essayé avec 32, mais cela ne fonctionne pas.

    Pensez vous que mon problème vient de ma condition ou que je dois chercher une méthode plus simple ?

    Merci

  7. #6
    invite4492c379

    Re : [JAVA] Conversion

    Citation Envoyé par Mcflys Voir le message
    Bonjour,


    Non, je ne vous suis pas. Une division d'entier positif donnera toujours un entier positif
    Non car 1/2 =0 et 0>0 est faux.

    Citation Envoyé par Mcflys Voir le message
    Pour l'instant, je me restreint au entier puis après je travaillerais avec les négatifs.
    Attention à l'encodage des négatifs.

    Citation Envoyé par Mcflys Voir le message
    Code PHP:
    Un tableau à 0 élément 
    Oui, j'ai mis un tableau à une case, mais après la taille augmente grâce à l'incrémentation de mon compteur.
    J'ai essayé avec 32, mais cela ne fonctionne pas.

    Pensez vous que mon problème vient de ma condition ou que je dois chercher une méthode plus simple ?

    Merci
    Avec le code
    Code:
    int compteur=0;
            tab=new int[compteur];
    
    Incrémenter compteur n'incrémentera pas la taille du tableau, celle-ci est fixée lors du new.

    Si on fait une trace de ce que l'on désire obtenir :

    compteur tab nombre nombre%2 nombre/2 nombre>0
    0 {} 14 true
    0 {} 14 0 7
    1 {0} 7 true
    1 {0} 7 1 3
    2 {0,1} 3 true
    2 {0,1} 3 1 1
    3 {0,1,1} 1 true
    3 {0,1,1} 1 1 0
    4 {0,1,1,1} 0 false
    4 {0,1,1,1}

    Et 14 s'écrit bien 1110 en binaire. La condition nombre>0 est bonne. Ne pas oublier d'afficher le tableau en commençant par la fin pour avoir l'écriture binaire dans le bon ses.

  8. #7
    Mcflys

    Re : [JAVA] Conversion

    Bonsoir, merci de votre réponse et bien détaillé en plus.
    Je vais voir ça de plus près et je vous recontacte en cas de difficultés majeures.

    En tout cas, déjà merci

Discussions similaires

  1. java
    Par invite5dfb4918 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 01/10/2009, 19h13
  2. Conversion de base : connaître le nième chiffre sans faire toute la conversion
    Par RVmappeurCS dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 02/07/2009, 19h14
  3. Java, java, java, where are you, there's a mission for you !
    Par invite1237a629 dans le forum Logiciel - Software - Open Source
    Réponses: 35
    Dernier message: 16/03/2008, 22h10
  4. Probleme avec une conversion en java
    Par inviteea041823 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 04/07/2007, 08h34
  5. java help!!
    Par invited6d83fd1 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 30/07/2005, 10h56