IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

convertir un générique en Int ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut convertir un générique en Int ?
    Bonjour j'ai dans mon code une méthode générique d'un arbre binaire, et je souhaiterais afficher sa valeur;
    voici la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public BinTree<T> sag(){
    		return left;
    	}
    en console j'ai l'adresse mémoire qui s'affiche : Noeud@2a9931f5

    et je souhaiterais pouvoir afficher la valeur quelle contient, comment faire j'ai essayer de caster en Integer mais ca ne fonctionne pas !

    voila le code de ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    public class Noeud<T> implements BinTree<T> {
     
    	private T root;
    	private BinTree<T> left;
    	private BinTree<T> right;
     
    	public Noeud(T r, BinTree<T> g, BinTree<T> d){
    		root = r;
    		left = g;
    		right = d;
    	}
     
     
    	public boolean estVide(){
    		return false;
    	}
     
    	public T racine(){
    		return root;
    	}
     
    	public BinTree<T> sag(){
    		return left;
    	}
     
    	public BinTree<T> sad(){
    		return right;
    	}
     
    	public int hauteur(){
    		int g = left.hauteur();
    		int d = right.hauteur();
    		int res = (g>d ? g:d);
    		return res+1;
    	}
     
    	public int taille(){
    		return 1+left.taille()+right.taille();
    	}
     
    	public String affichage(){
    		return "["+root+","+left.affichage()+","+right.affichage()+"]";
    	}
     
    	public void imprime(){
    		for (int i=0; i<1; i++){
    			System.out.println("   "+root);
    		}
    		for (int j=1; j<2; j++){
    			System.out.println(" /   \\ ");
    		}
    		for (int j=2; j<3; j++){
    			System.out.println();
    		}
    	}
    }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 098
    Par défaut
    Il faut redefinir la methode toString(); dans la classe de l'objet T je pense pour avoir un affichage perso.

    Ensuite pour le 2 eme probleme : Il est ou ton cast qui ne marche pas ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    ah ben je l'ai enlevé le cast, tu veux dire quoi par redéfinir la méthode toString() ?

    j'ai enlevé le cast qui ne fonctionner pas ! par contre j'ai fait ceci, j'ai rajouté l'attribut left1 qui cast en int left, mais quand je l'affiche en console j'obtient "null" !
    alors que dans mon main que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	public static void main(String[] args) {
    		BinTree<Integer> a0 = new Feuille<Integer>();
    		BinTree<Integer> a2 = new Noeud<Integer>(2,a0,a0);
    		BinTree<Integer> a4 = new Noeud<Integer>(4,a0,a0);
    		BinTree<Integer> a7 = new Noeud<Integer>(7,a0,a0);
    		BinTree<Integer> a01 = new Noeud<Integer>(0,a2,a7);
    		BinTree<Integer> a1 = new Noeud<Integer>(1,a01,a4);
    je ne comprend pas pourquoi j'ai null car j'ai bien instancier une valeur à chaque noeud et a leur fils gauche et droit

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 098
    Par défaut
    Ton truc est si gros que ca que tu ne postes pas un truc(code) essayable ? Parce que la c'est pas évident.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    Il est assez gros mais je l'ai réduit pour afficher le problème, voila
    la j'ai mon interface :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public interface BinTree<T> {
     
    	boolean estVide();
    	T racine();
    	BinTree<T> sag();
    	BinTree<T> sad();
    	int hauteur();
    	int taille();
    	String affichage();
    	void imprime();
    }
    ensuite ma classe Feuille qui permet d’instancier les feuilles de l'arbre B (peu d'importance car elle ne pose pas de soucis) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public class Feuille<T> implements BinTree<T> {
     
    	public boolean estVide(){
    		return true;
    	}
     
    	public T racine(){
    		throw new IllegalArgumentException("C'est une feuille");
    	}
     
    	public BinTree<T> sag(){
    		throw new IllegalArgumentException("C'est une feuille");
    	}
     
    	public BinTree<T> sad(){
    		throw new IllegalArgumentException("C'est une feuille");
    	}
     
    	public int hauteur(){
    		return 0;
    	}
     
    	public int taille(){
    		return 0;
    	}
     
    	public String affichage(){
    		return "<>";
    	}
     
    	public void imprime(){
     
    	}
    et ensuite ma classe Nœud qui instancie les nœuds de mon arbre, et c'est que ce pose le problème, je n'arrive pas à afficher la valeur des fils gauche et droit aussi bien en fesant un cast de sag() qui me retourne un null, ou en essaye de l'obtenir avec une méthode string qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    public class Noeud<T> implements BinTree<T> {
     
    	private T root;
    	private BinTree<T> left;
    	private BinTree<T> right;
     
    	public Noeud(T r, BinTree<T> g, BinTree<T> d){
    		root = r;
    		left = g;
    		right = d;
    	}
     
     
    	public boolean estVide(){
    		return false;
    	}
     
    	public T racine(){
    		return root;
    	}
     
    	public BinTree<T> sag(){
    		return left;
    	}
     
    	public BinTree<T> sad(){
    		return right;
    	}
     
    	public int hauteur(){
    		int g = left.hauteur();
    		int d = right.hauteur();
    		int res = (g>d ? g:d);
    		return res+1;
    	}
     
    	public int taille(){
    		return 1+left.taille()+right.taille();
    	}
     
    	public String affichage(){
    		return "["+root+","+left.affichage()+","+right.affichage()+"]";
    	}
     
    	public void imprime(){
    		for (int i=0; i<1; i++){
    			System.out.println("   "+root);
    		}
    		for (int j=1; j<2; j++){
    			System.out.println(" /   \\ ");
    		}
     
    	}
    }
    et enfin ma page de test ou je crée mes nœuds et sag, et sad:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public class MesArbresBin {
     
    	public static void main(String[] args) {
    		BinTree<Integer> a0 = new Feuille<Integer>();
    		BinTree<Integer> a2 = new Noeud<Integer>(2,a0,a0);
    		BinTree<Integer> a4 = new Noeud<Integer>(4,a0,a0);
    		BinTree<Integer> a7 = new Noeud<Integer>(7,a0,a0);
    		BinTree<Integer> a01 = new Noeud<Integer>(0,a2,a7);
    		BinTree<Integer> a1 = new Noeud<Integer>(1,a01,a4);
     
    		System.out.println("Taille de a1 : "+a1.taille());
    		System.out.println("Hauteur de a1 : "+a1.hauteur());
    		System.out.println(a1.affichage());
    		a1.imprime();
     
    	}
     
    }

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 098
    Par défaut
    J'ai pas de nullpointer avec ton code. J'obtiens ceci :

    Taille de a1 : 5
    Hauteur de a1 : 3
    [1,[0,[2,<>,<>],[7,<>,<>]],[4,<>,<>]]
    1
    / \
    evidement il manque la recursion pour avoir tout l'arbre. Et bonne amusement pour l'affichage
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [C#] Convertir une String en Int ?
    Par Kylen dans le forum ASP.NET
    Réponses: 12
    Dernier message: 11/04/2012, 10h59
  2. [(cast)] convertir un char en int...
    Par APoLLoN1234 dans le forum C++
    Réponses: 12
    Dernier message: 15/03/2006, 23h15
  3. convertir un char en int / et prob d'espace
    Par yanchasp dans le forum C++
    Réponses: 20
    Dernier message: 07/02/2006, 19h17
  4. Convertir un void* en int ...?
    Par alex6891 dans le forum C++
    Réponses: 15
    Dernier message: 15/11/2005, 22h43
  5. [Conversion]Convertir un char[] en int
    Par ThanosT dans le forum Général Java
    Réponses: 10
    Dernier message: 11/11/2005, 12h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo