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 :

structure de contrôle


Sujet :

Java

  1. #1
    Membre confirmé Avatar de bouchra19
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut structure de contrôle
    salut tout le monde ^^

    j'ai 3 interfaces différentes: Voiture, Chauffeur et Voyage et chaque interfaces a ses champs, boutons et méthodes: ajouter, supprimer, modifier, lister ...

    Le problème c'est que dans l'interface Voyage j'ai un champ codeVoiture qui normalement appartient à la classe Voiture et je veux appliquer une condition pour l'ajout d'une valeur de ce code: il doit être existant dans l'interface Voiture. J'ai fait un essai mais ça me donne des erreurs.

    Je ne sais pas si j'ai bien expliqué mais voilà le code de la classe ajouterVoyageAction:

    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
     
    package Voyage;
     
    import javax.swing.*;
    import java.awt.event.*;
     
    public class ajouterVoyageAction extends AbstractAction{
    	FenetreVoyage F;
    	FenetreVoiture A;
    	FenetreChauffeur B;
     
    	public ajouterVoyageAction(String texte,FenetreVoyage F){
    		super(texte);
    		this.F=F;
    	}
    		public void actionPerformed(ActionEvent e){
     
     
    			int codeVoyage=Integer.parseInt(F.Tcode.getText());
    			int codeChauffeur=Integer.parseInt(F.TCC.getText());
    			int codeVoiture=Integer.parseInt(F.TCV.getText());
     
    			String HD = F.THD.getText();
    			String HA = F.THA.getText();
    			String  VD = F.TVD.getText();
    			String  VA = F.TVA.getText();
    			Voyage V= new Voyage(codeVoyage,HD,HA,VD,VA,codeChauffeur,codeVoiture);
     
    			int x=0,y=0;
     
    			for(int i=0;i<A.tabV.length;i++){
    				if(codeVoiture==A.tabV[i].code)
    					x=1;
    			}
     
    			for(int j=0;j<B.tabV.length;j++){
    				if(codeChauffeur==B.tabV[j].codeChauffeur)
    					y=1;
    			}
     
    			if(x==1&&y==1){
    			F.Ajouter(V);
    			JOptionPane.showMessageDialog(F, "Objet inséré");
    			F.viderChamps();
    			}
    			else
    				JOptionPane.showMessageDialog(F, "Code voiture ou code chauffeur inexistant");
    		}
    	}

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Par défaut
    Quelle type d'erreur as-tu?
    Sans cette précision on ne sait pas ou est le problème.

    Concernant ta classe, les objet A et B en champs n'ont pas l'aire d'être initialisé, ça dépend de ce qu'il y a dans ton "super(texte)" et le reste du code qu'on ne voit pas.

    Concernant l'idée général de ton algo, il a l'air très couteux,
    - apparemment tu peux t’arrêter a la première boucle si x != 1
    - quand x= 1 tu peux faire un break pour arreter la boucle
    - tu peux optimiser l'écriture en passant de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
               for(int i=0;i<A.tabV.length;i++){
    		if(codeVoiture==A.tabV[i].code)
    			x=1;
    	   }
    a:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
              for ( Integer code : A.tabV)
                    if( codeVoiture == code){
                          x=1; break;}
               }

    David.

  3. #3
    Membre confirmé Avatar de bouchra19
    Femme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut
    d'abord j'ai fait un petit changement:
    à la place de FenetreVoiture A;
    j'ai fait FenetreVoiture A = new FenetreVoiture();
    et idem pour FenetreChauffeur.

    Et lorsque j'exécute le programme:
    -Si j'entre un code voiture ou chauffeur inexistant on me donne effectivement un message JOptionPane et l'enregistrement voyage ne s'ajoute pas (heureusement )

    -Mais lorsque j'ajoute un code existant on me donne le même message "code voiture ou chauffeur inexistant"

    -Et si j'entre les codes par défaut(que j'ai définis dans les constructeurs des classes Voiture et Chauffeur) il ajoute l'enregistrement mais il me donne comme même des messages d'erreur dans la console:

    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
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2
    	at Voyage.FenetreVoyage.Ajouter(FenetreVoyage.java:125)
    	at Voyage.ajouterVoyageAction.actionPerformed(ajouterVoyageAction.java:46)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    	at java.awt.EventQueue.access$000(Unknown Source)
    	at java.awt.EventQueue$1.run(Unknown Source)
    	at java.awt.EventQueue$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue$2.run(Unknown Source)
    	at java.awt.EventQueue$2.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Le seul conseil que l'on puisse te donner et de regarder à la ligne 125 de ta classe FenetreVoyage et de regarder ce qu'il s'y passe. (tu essaies d'accéder à un index d'une collection/un tableau qui n'existe pas).

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2010
    Messages : 59
    Par défaut
    Si le seul changement que t'as fait c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	d'abord j'ai fait un petit changement:
    à la place de FenetreVoiture A;
    j'ai fait FenetreVoiture A = new FenetreVoiture();
    et idem pour FenetreChauffeur.
    Tu initialise une nouvelle "fenetre" voiture et chauffeur par rapport à ce que t'appels ton existant.

    Je pense qu'en argument de ta fonction tu devrait ajouter tes "fenetre"voiture et chauffeur qui serait tes "fenetre"d'origine (qui possède ton existant).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public ajouterVoyageAction(String texte,FenetreVoyage F, FenetreVoiture A, fenetreChauffeur B){


    David.

Discussions similaires

  1. [Lex/Yacc] Aide traduction des structures de contrôle
    Par pelo68 dans le forum Générateurs de compilateur
    Réponses: 2
    Dernier message: 07/12/2010, 10h26
  2. Créer des noms de WinForm dans une structure de contrôle ?
    Par Feroen dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/08/2007, 08h12
  3. Réponses: 7
    Dernier message: 12/03/2007, 09h06

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