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

Java Discussion :

Problème compilation- Classe Entier


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 99
    Points : 47
    Points
    47
    Par défaut Problème compilation- Classe Entier
    Bonsoir à tous,

    je viens de finir mon projet qui porté sur les Entiers...Je pense avoir bien réussi mes classes. Cependant lors de la compilation de ma classe ESSAI, on m'affiche

    1
    2
    3
    4
    5
    6
    7
    8
    9

    2
    8
    3
    7

    1
    1

    je retrouve la moitié de ce que je voudrais obtenir(je voudrais obtenir en plus un résultat pour l'addition et un autre pour la multiplication) et je comprend pas pourquoi mes résultats s'affichent ainsi (un par ligne)

    De plus je ne sais pas qd je met : i=i+1; dans la méthode Afficher cela soit juste....

    Sinon Voici mes 2 classes, S'il vous plait dites moi ou je plante...Merci beaucoup



    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    public class Entier {
     
    	final static int Nmax = 20;
    	int [] tab;
     
     
    	public Entier(int [] tab_0){
    		tab = new int[Nmax];
    		for(int i=0; i < Nmax; i++){
    			tab[i]=0;
    		}
    		for(int i=0; i < tab_0.length; i++){
    			tab[tab.length-1-i] = tab_0[tab_0.length-1-i];
    		}
    	}
     
    	public void afficher(){
    		int i=0;
    		while(tab[i]==0){i=i+1;
    		}	
    		for(int j=i; j<Nmax; j++){
    			System.out.println(tab[j]);
    		}
    	}
     
    	public Entier(int x){
    		tab = new int[Nmax];
    		for(int i=0; i<Nmax; i++){
    			tab[i]=0;
    		}
    		int val = x;
    		for(int i = 9; i>=0; i--){
    			tab[tab.length-1-i]=val/puissanceDix(i);
    			val = val-puissanceDix(i)*(val/puissanceDix(i));
    		}
    	}
     
    	public static int puissanceDix(int a){
    		int res = 1;
    		for(int i=0; i<a; i++){
    			res = res*10;
    		}
    		return res;
    	}
     
    	public static Entier additionner(Entier a, Entier b){
    		int retenue = 0;
    		Entier res2 = new Entier(0);
    		for(int i=Nmax-1; i>=0; i--){
    			res2.tab[i]=((a.tab[i])+(b.tab[i]))/10+retenue;
    			retenue = ((a.tab[i])+(b.tab[i]))/10;
    		}
    		return res2;
    	}
     
    	public boolean inferieur(Entier z){
    		boolean res4 = false;
    		for(int i=0; i<Nmax; i++){
    			if(tab[i]<z.tab[i]){
    		res4 = true;
    		break;
    			}
    			if(z.tab[i]<tab[i]){
    				break;
    			}
    		}
    		return res4;
    	}
     
    	public static Entier multiplier(Entier x, Entier y){
    		Entier res3 = new Entier(0);
    		for(Entier i = new Entier(0); i.inferieur(y); i=additionner(i,i)){
    			res3 = additionner(res3, x);
    		}
    		return res3;
    	}
    }
    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
     
    public class Essai {
     
    	public static void main(String[] args) {
    		int []tab = {1,2,3,4,5,6,7,8,9};
    		Entier Reel1 = new Entier(tab);
    		Reel1.afficher();
     
    		System.out.println("");
     
    		Entier Reel2 = new Entier(2837);
    		Reel2.afficher();
     
    		System.out.println("");
     
    		Entier Reel6 = new Entier(365);
    		Entier Reel7 = new Entier(711);
    		Entier Reel8;
    		Reel8 = Entier.additionner(Reel6, Reel7);
    		Reel8.afficher();
     
    		System.out.println("");
     
    		Entier Reel3 = new Entier(20);
    		Entier Reel4 = new Entier(415);
    		Entier Reel5;
    		Reel5 = Entier.multiplier(Reel3, Reel4);
    		Reel5.afficher();
     
    	}
     
    }
    Merci ++

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    for(int i=0; i < tab_0.length; i++){
    tab[tab.length-1-i] = tab_0[tab_0.length-1-i];
    }
    pourquoi faire simple quand on peut faire compliqué :
    tab[i]=tab_0[i]
    ne suffirait-il pas ?

    de même que
    public void afficher(){
    int i=0;
    while(tab[i]==0){i=i+1;
    }
    for(int j=i; j<Nmax; j++){
    System.out.println(tab[j]);
    }
    }
    public void afficher(){
    for(int i=0;i<NMax;i++){
    if(tab[i]!=0){
    System.out.print(tab[i]+" ");
    }
    }
    }

    Tu noteras que j'utilse print et non println ce qui évite de revenir à la ligne.
    Bon c'est tout pour l'instant, il est tard, vais me coucher.

    [EDIT]
    Et pourquoi tu essais de réinventer la roue alors qu' "int" et "Integer" existent déjà (et si cela ne suffit pas en terme de maximum il existe aussi BigInteger) ??

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 99
    Points : 47
    Points
    47
    Par défaut
    Salut,

    J'ai changé les expressions que tu m'as donné...Cela fonctionne bien (il y a aucune fautes). Je t'en remercie.
    Cependant ma classe Essai "merde" encore; ma console me donne :

    1 2 3 4 5 6 7 8 9
    2 8 3 7
    1 1

    Il n'y a pas les autres résultats pour la multiplication et l'addition.

    PS : Voici mon Exercice pour répondre a ton EDIT :

    On vous demande d’écrire une classe Entier regroupant :
    - les attributs de représentation, notamment :
    o un tableau tab de chiffres ;
    o n chiffres au maximum dans ce tableau ;
    - des méthodes en vue de manipuler des objets ou des valeurs particulières de ce type Entier :
    o construire un objet de type Entier à partir d’un entier nb de type int passé en paramètre, en le décomposant en ses chiffres que vous rangez dans tab ;
    o une méthode pour déterminer le nombre de chiffres d’un entier nb passé en paramètre ;
    o affichage d’une valeur de type Entier ;
    o addition dune valeur de type Entier à une autre valeur de type Entier passée en paramètre, le résultat doit être une valeur également de type Entier ;
    o multiplication d’une valeur de type Entier par une autre valeur de type Entier passée en paramètre, le résultat doit également être une valeur de type Entier


    Merci d'avance pour vos réponses.

  4. #4
    Membre éclairé

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Points : 803
    Points
    803
    Par défaut
    bonjour,

    Je suis désolé mais je pense que tu te complique la vie pour pas grand chose... Tu multiplie les méthodes inutilement. Avant de continuer regarde chacune de tes méthodes et demande toi si il est réellement necessaire de la faire séparément des autres (je pense a ta méthode puissancedix c'est peut etre moi qui saisie pas tout je n'ai pas la science infuse mais je ne saisie pas l'interet de réaliser une méthode pour ca.).

Discussions similaires

  1. problème compilation class
    Par jmb00 dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 12/05/2011, 21h24
  2. problème de classe en compilation
    Par stephcast dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 13/09/2009, 00h18
  3. Problème compilation Static ou non - Class Glut
    Par alexis0587 dans le forum Débuter
    Réponses: 1
    Dernier message: 28/03/2009, 16h26
  4. Problème compilation car nom de la classe très grand
    Par adilou1981 dans le forum Général Java
    Réponses: 1
    Dernier message: 04/12/2008, 12h54
  5. Problème Class Entier
    Par stansoad0108 dans le forum Général Java
    Réponses: 4
    Dernier message: 03/01/2008, 19h00

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