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 :

[Language] Accès à une variable


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut [Language] Accès à une variable
    ( re ) bonjour
    je suis en train de faire comme une synthese du peu que j'ai lus
    mais une fois de plus je n'ai pas tout compris
    tout contend d'avoir creer ma premiere classe utulisant l'heritage
    j'ai voulu la mettre en pratique
    seulement, mon code comporte 4 erreurs
    j'ai essayer de changer plein de chose et rien n'y fait !
    voici le code de la page qui lance le test

    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
     
    package exos.outils;
    import javax.swing.JOptionPane;
    class bt
    {
    	public static void main(String [] args)
    	{
    	String message=" un chiffre a calculer :";
    	float c=Float.parseFloat(JOptionPane.showInputDialog(null,message));
    	String message2="Hors taxe(1) ou ttc ?(0)";
    	int d=Integer.parseInt(JOptionPane.showInputDialog(null,message2));
    	String message4="5.5(0) ou 19.6(1)";
    	float e=Float.parseFloat(JOptionPane.showInputDialog(null,message4));
    	  if(e==0)
    	  {
    	   tva5 matva=new tva5(c,d);
    	  }
    	  else
    	  {
    	   tva2 matva=new tva2(c,d);
    	  }
    	  matva.calcultva();
    	  JOptionPane.showMessageDialog(null,"La tva est de"+matva.getTva());
    	  JOptionPane.showMessageDialog(null,"Le Ht est de"+matva.getHt());
    	  JOptionPane.showMessageDialog(null,"Le TTc est de"+matva.getTtc());
    	}
    }
    et le code de la classe tva2 et tva5 ( respectivement 19.6 et 5.5 )
    normalement correct...
    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
     
    package exos.outils;
    public class tva2
    {
    protected float ttc;
    protected float ht;
    protected double tva9;
    protected int mode;
    	public tva2(float chiffre,int mode)
    	{
    	   if(mode==1)
    	   {
    	     this.ttc=chiffre;
    		 this.mode=mode;
    		}
    	   else
    	   {
    	   this.ht=chiffre;
    	   this.mode=(int) chiffre;
    	   }
    	}
    	public void calcultva()
    	{
    		 if(this.mode==1)
    		 {
    		 this.tva9=(this.ttc*100)/119.6;
    		 this.ht=this.ttc-(float)this.tva9;
    		 }
    		else
    		{
    		 this.tva9=(this.ht*19.6)/100;
    		 this.ttc=this.ht+(float)this.tva9;
    		}
    	}
     
    	public double getTva()
    	{
    	return this.tva9;
    	}
     
    	public float getHt()
    	{
    	return this.ht;
    	}
     
    	public float getTtc()
    	{
    	return this.ttc;
    	}
     
    }
     
    class tva5 extends tva2
    {
    public tva5(float f,int i)
    { 
       super(f,i); 
    }
    public void calcultva()
    	{
    		 if(this.mode==1)
    		 {
    		 this.tva9=(this.ttc*100)/105.5;
    		 this.ht=this.ttc-(float)this.tva9;
    		 }
    		else
    		{
    		 this.tva9=(this.ht*5.5)/100;
    		 this.ttc=this.ht+(float)this.tva9;
    		}
    	}
    }
    les quatres erreurs resorties sont :

    cannot resolve Symbol
    Symbol: Variable matva //Normalement qui est censé etre un objet de type tva2 ou tva5
    Location: exos.outils.bt
    et les quatres erreurs pareil
    j'ai poster le code des deux classe au cas ou il pourrait vous servir...
    ( mais normalement correct car deja corrigé par un membre )
    Merci tous

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float c=java.lang.Float.parseFloat(javax.swing.JOptionPane.showInputDialog(null,message));
    pour rendre ton code plus lisible, fais des import de package.
    après on verra plus facilement s'il y a des erreurs

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    c'est fait ( en plus c'est une habitude a prendre car ça devient tout de suite plus lisible )

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    tu peux éditer ton 1er message pour mettre le code avec les import ? ce sera plus lisible pour moi aussi

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    tu peux éditer ton 1er message pour mettre le code avec les import ? ce sera plus lisible pour moi aussi
    je ne suis pas egoiste et en plus c'est moi qui vient quemander
    donc je l'ai édité mais je crois que tu veut dire que je peut encore simplifier ?
    ( mais je ne vois pas comment faire mieux )

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    non c'est bon maintenant
    je vais jeter un oeil

  7. #7
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut Re: [Débutant]Probléme d'instanciation
    Citation Envoyé par Boumeur
    if(e==0)
    {
    tva5 matva=new tva5(c,d);
    }
    else
    {
    tva2 matva=new tva2(c,d);
    }
    matva.calcultva();
    t'as déclaré matva dans le if, je vois pas pourquoi il serait reconnu en dehors...

  8. #8
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    exact, il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        tva2 matva;
     
        if(e==0)
           matva=new tva5(c,d);
        else
           matva=new tva2(c,d);
     
        matva.calcultva();
    et laisser le soin au mécanisme de polymorphisme de trouver la fonction adéquat.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    au debut j'allais dire ( avant de tester ce que tu m'a dis )
    pour la simple et bonne raison que il n'y a que deux possibilités
    soit e=0 soit il est different
    ce qui fait que il devrait etre reconnu non ?
    ( matva.calcultva(); est apres le if et le else )
    et apres test il s'averre que tu as raison


    en php ou javascript cela aurait marcher d'ou mon raisonnement
    ( pas genial pour penser objet )
    mais une derniere question :
    pourquoi le mtva ne se declare pas sachant que il n'y as que deux possibilités (e= 0 ou e!= de 0 ) ?

    maintenant me voila avec un autre probleme lorsuqe je tape :
    java bt j'ai les erreurs :
    Exepction in trhead main java.lang.noClassFoundError : bt (wrong name: exos/outils/bt )
    at java.lang.classLoader.defineClass etc... ( sur 10 lignes )
    que de question... ( en tout cas merci de vos expliquations )

  10. #10
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    une variable n'est connue que dans le bloc où elle a été déclaré et dans les blocs internes à celui-ci succédant la déclaration.

    donc dans ton cas, il existe 2 variables matva distinctes qui n'existent, l'une que dans le bloc du if, l'autre que dans le bloc du else. dans le bloc du main (le bloc au-dessus du if et du else), la variable n'existe pas

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    d'accord merci de ces presisions

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

Discussions similaires

  1. [PDO] Problème d'accès au contenu d'une variable issue d'une requête.
    Par Java_doc dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/06/2012, 14h23
  2. acces aux ressources par une variable?
    Par lowfee dans le forum VB.NET
    Réponses: 17
    Dernier message: 09/11/2010, 20h47
  3. [DOM] Accès au DOM par une variable
    Par riete dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/07/2008, 18h34
  4. [Language]acces aux metode d une classe
    Par harris_macken dans le forum Langage
    Réponses: 5
    Dernier message: 06/04/2005, 10h52
  5. [Debutant] Probleme d'acces a une variable
    Par Bugmaster dans le forum Langage
    Réponses: 16
    Dernier message: 02/09/2004, 16h57

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