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 :

Valeur et champ


Sujet :

Langage Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut Valeur et champ
    Bonjour,

    lorsque je veux assigné une valeur d'un champs de mon objet, j'ai le code d'erreur suivant :

    The left-hand side of an assignment must be a variable
    alors voici un bout de mon code :

    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
     
    public Fraction Simplifie(Fraction t6){
     
    		if (t6.getNum()< t6.getDenum()){
     
    			for (i = 2 ; i >t6.getDenum(); i++){
     
    				if ( (t6.getNum() % i == 0) && ( t6.getDenum() %i == 0)){
     
    					t6.getNum() /= 2 ; 
    					t6.getDenum() /= 2 ;
    				}
    			}
     
    		}
    Je ne voi pas du tout le problème, est ce qqun aurait une solution ?

  2. #2
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    je suppose que tu as deja declae ton int i dans ta boucle for.
    et puis je soupsonne l erreur dans ton if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((t6.getNum() % i) == 0)
    ajoute les ()

    Cheers,

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut
    ah les parenthéses , mais ce ne'est pas sa le probléme .

    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    public class Fraction{
     
     
    	private int num ;
    	private int denum ; 
    	private int x, y , z;
    	private int i ;
     
    	/** Fraction(int num , int denum) initilise une fraction à partir de 2 entiers
            */	
    	public Fraction(int num, int denum) {
     
    		this.num = num ;
    		this.denum = denum ;
     
    	}
    	/** Fraction(Fraction f) Constructeur par copie
             */
    	public Fraction(Fraction t1){
     
    		this.num = t1.getNum() ;
    		this.denum = t1.getDenum() ; 
    	}
    	/**Fraction()Constructeur sans argument utiliser par la méthode init
             * 
             */
    	public Fraction(){
     
    	}
    	/**
             * 
             * @return retourne la chaine de caractére qui décrit un Fraction
             */
    	public  String toString(){
     
     
    		return (getNum() +" /  " + getDenum() +
    				" représente une fraction de numérateur =" + this.num + 
    				" et de dénumérateur =  "+ this.denum );
     
     
    	}
     
    	/**
             * 
             * @param t1
             * @return retourn l'invers de la fraction
             */
    	public Fraction Inverse(Fraction t1){
     
    		this.x = t1.getNum() ;
    		this.y = t1.getDenum() ;
     
     
    		this.z = this.x ;
    		this.x = this.y ;
    		this.y = this.z ;
     
    		this.num = this.x ;
    		this.denum = this.y ;
     
    		return  t1 ;
     
    	}
     
    	/**
             * 
             * @param t4
             * @return Ajout de la fraction courante à une autre fraction
             */	
    	public Fraction Ajout(Fraction t4){
     
     
    		t4.num = ( this.num * t4.denum ) + (  t4.num * this.denum) ;
    		t4.denum = t4.denum * this.denum ; 
     
    		return t4 ; 
     
     
    	}
    	/**
             * 
             * @return Multuplie la fraction courante à une autre fraction
             */
    	public Fraction Mult(Fraction t2){
     
    		t2.num = this.num * t2.num ;
    		t2.denum = this.denum * t2.denum ;
     
    		return t2 ;
     
    	}
     
    	/**
             * 
             * @return Accé au numérateur
             */
     
    	public int getNum(){
     
    		return this.num  ; 
    	}
    	/**
             * 
             * @return Accé au dénomirateur
             */
    	public int getDenum(){
     
     
    		return this.denum  ; 
    	}
     
    	/**
             * 
             * @return Méthode qui simplifie une fraction
             */
     
    	public Fraction Simplifie(Fraction t6){
     
    		if (t6.getNum()< t6.getDenum()){
     
    			for (i = 2 ; i >t6.getDenum(); i++){
     
    				if ( (t6.getNum() % i == 0) && ( (t6.getDenum()) %i == 0)){
     
    					t6.getNum() /= 2 ; 
    					t6.getDenum() /= 2 ;
    				}
    			}
     
    		}
     
    		return t6 ;
     
    	}
     
    }
    Mon int i a été déclarer En private int i.
    Alors une autre information, t6 est un objet du type Fraction qui se trouve dans une autre class :

    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    public class TestFraction{
     
    	static public int val1 ;
    	static public int val2 ;  
    	static public Fraction t5 ;
     
     
    	public static void main(String[] args) {
     
    		Fraction t1 ; 
    		Fraction t2 ;
    		Fraction t3 ;
    		Fraction t4 ;
    		Fraction t6 ;
    		t1 = new Fraction( 2 ,  3 ) ; 
    		//demun ;
    		System.out.println(" le res de t1 est " + t1.getNum() +" /  " +  t1.getDenum() ) ; 
     
     
    		System.out.println("------------------------------------------(c)------------------------------------------------------") ; 
     
    		t2 = new Fraction(t1) ;
     
    		System.out.println(" le res de t2 est " + t2.getNum() +" /  " +  t2.getDenum() ) ; 
     
    		System.out.println("------------------------------------valeur entrée par utilisateur----------------------------------") ; 
     
     
     
     
    		System.out.println("entrer votre val1 ");
    	val1 = Clavier.lireInt();  
     
    	System.out.println("entrer votre val2 ");
    	val2 = Clavier.lireInt();
     
    	t3 = new Fraction(val1 , val2) ;
     
    	System.out.println(" t3 represente  " + t3.getNum() +" /  " +  t3.getDenum() ) ; 
     
     
     
    	System.out.println("----------------Constructeur vide--------------------");
    	//t3 = new Fraction();
    	//System.out.println(" t3 represente  " + t3.getNum() +" /  " +  t3.getDenum() ) ;
     
    	System.out.println("----------------To string--------------------");
     
    	System.out.println("t1 --> "+ t1.toString() );
    	System.out.println("t2 --> "+t2.toString() );
    	System.out.println("t3 --> "+t3.toString()) ; 
     
     
     
    	System.out.println("----------------Inversion--------------------");
     
     
    	t4 = new Fraction() ; // Init
     
    	t4.Inverse(t1) ; // Affiche inverse de t1 dans t4
     
     
    	System.out.println("l'inverse de t1 = "+ t1.getNum() +" / "
    			+  t1.getDenum()+" est t4 ="+ t4.getNum() +" /  " +  t4.getDenum() );
     
    	System.out.println("----------------Ajout--------------------");
     
     
    	t4 = new Fraction(6,8);
    	t1.Ajout(t4);
    	System.out.println("t1 + t4 = " +t4.getNum()+" / "+  t4.getDenum() ) ;
     
     
    	System.out.println("----------------Mult--------------------");
     
    	t2 = new Fraction ( 5, 4); 
    	t1.Mult(t2) ;
    	System.out.println("t1 * t2 = " +t2.getNum()+" / "+  t2.getDenum() ) ;
     
    	System.out.println("----------------Simplifier--------------------");
     
    	System.out.println("entrer votre val1 ");
    	val1 = Clavier.lireInt();  
     
    	System.out.println("entrer votre val1 ");
    	val1 = Clavier.lireInt();
     
    	t6 = new Fraction(val1, val2) ;
    	t6.Simplifie(t6);
     
    	}
    }

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Ceci est interdit, tu ne peux affecter une valeur a une méthode, en revanche tu peux faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t6.setNum(t6.getNum() / 2);
    Si tu as une methode setNum bien sur..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut
    AH oui d'accord, faut que j'arrête de pensé en procédurale

    En tout cas Merci beaucoup

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut
    Encore une question, je serait obligé de faire sa à chaque fois, avoir une méthode setNum par exmeple??

    Est ce un trait spécifique de Java ou c'est normal pour les tout les langages OOP
    Je veux dire pour le C++ ?

  7. #7
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Ca n'a rien a voir avec le procédural .. je ne connais pas de langage qui sache traiter une fonction a gauche d'une affectation.

    C'est pour ça que les variables existent, dans ton exemple tu peux mettre num et denum dans des variables locales, tu fais dans ta boucle les opérations dessus que tu veux et a la fin tu fais un setNum(taVariable) et un setDenum(taVariable).

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 264
    Par défaut
    Oui c'est vraie ,c'est moi qui me suit mélangé les pinceaux .

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR8.5] Afficher 1ere valeur du champ sur chaque entête
    Par marvel dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 11/07/2005, 08h31
  2. Réponses: 2
    Dernier message: 15/06/2005, 15h57
  3. [FOREIGN K] Valeur de champ = nom de table. Bonne pratique ?
    Par Seb des Monts dans le forum Langage SQL
    Réponses: 9
    Dernier message: 17/05/2005, 10h56
  4. Tri par la moyenne des valeurs de champs ?
    Par rozwel dans le forum Requêtes
    Réponses: 8
    Dernier message: 28/01/2005, 18h35
  5. [servlet][tester la valeur des champs récupérés]
    Par maya5 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/05/2004, 10h06

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