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 :

Probleme d'execution en java?


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Par défaut Probleme d'execution en java?
    Bonsoir
    j'ai un mini projet à faire en java
    bon j'ai une fct de saisie qui permet la saisie des infos d'une personne puis d'enregister les infos sur un fichier voici le 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
    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 void Saisie(){
        while (true) {
            try {
             // FileWriter fw = new FileWriter(nomFichier, true);
             PrintWriter fw = null;
          fw = new PrintWriter(new FileWriter( "C:\\Users\\souad\\Desktop\\miniProjet\\personne.txt", true), true);
              System.out.println("Entrer le nom:");
              String n = Clavier.lireString();
              System.out.println("Entrer le Prenom:");
              String p = Clavier.lireString();
     
              System.out.println("Entrer le cne:");
              String c = Clavier.lireString();
              Personne per = new Personne(n, p, c);
              System.out.println(per.toString());
     
              try {
     
                if (!Recherche(per.getCne())) {
                		fw.write(n);
                      fw.write(" ");
                      fw.write(p);
                      fw.write(" ");
                      fw.write(c);
                      fw.close();
                  System.out.println("Ajout réussi");
                  System.out.println("**************");
     
     
                }
                else {
                  System.out.println("/////////////**************");
                  System.out.println(per.getCne() + " déjà existant");
     
                  throw new Exception("gggggg");
                }
     
              }
              catch (ArrayIndexOutOfBoundsException e) {
                System.out.println(e.getMessage());
              }catch(Exception e)
              {  
              }
     
     
            }
            catch (FileNotFoundException e) {
              e.printStackTrace();
            }
            catch (IOException e) {
              e.printStackTrace();
            }
            break;
        }
     
      }
    mais avant d'enregistrer il faut verifier si la personne exsite deja alors j'ai fait une fct recherche qui fait ça

    mais le probleme c'est que dans l'excution
    il me donne les infos que j'ai entré puis
    1
    exemple
    votre nom:
    salwa
    votre prenom
    amina
    votre cne
    123
    salwa amina 123
    1
    mais le message que j'ai déja ecrit s'affiche pas
    ni le message qui te permet de dire que cette personne exsite
    je sais que j'ai un probleme dans la fct de saisie mais j'arrive pas à le voir je me suis fatigué si quelqu'un peut me le dire

  2. #2
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Bonjour,
    le probleme se situe au niveau de ta boucle while qui ne sert à rien: quoi qu'il arrive tu passera toujours par le break, donc tu ne bouclera qu'une fois.

    Après je ne sais pas comment le reste de ton programme et ta fonction "Recherche" sont implémentées mais il y a déjà un problème de conception à ce niveau

    Ah oui aussi: la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throw new Exception("ggggg");
    n'apparaitra jamais puisque puisque cette exception est catchée à la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    catch(Exception e)
    {}
    Dans ce catch, tu n'affiches pas le message de l'exception...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    Elle ne sert à rien ta boucle !!! En plus while(true) c'est une JavaJoke ;-).

  4. #4
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Par défaut
    voilà j'ai rectifié mais cette fois ci le probleme si j'entre un cne qui exsite déja il l'ajoute
    voilà le 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
    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
     
      public void Saisie(){
     
            try {
     
              PrintWriter fw = new PrintWriter(new FileWriter( "C:\\Users\\souad\\Desktop\\miniProjet\\personne.txt", true), true);
              System.out.println("Entrer le nom:");
              String n = Clavier.lireString();
              System.out.println("Entrer le Prenom:");
              String p = Clavier.lireString();
              System.out.println("Entrer le cne:");
              String c = Clavier.lireString();
              Personne per = new Personne(n, p, c);
              System.out.println(per.toString());
     
     
                if (!Recherche(per.getCne())) {
                	fw.println(n +" "+ p+  " "+c + " " +"est inscrit" + "   ");
                    fw.close();
                 System.out.println("Ajout réussi");
                 }
                else {
                	System.out.println(per.getCne() + " déjà existant");	
     
                }
     
     
     
            }
            catch (ArrayIndexOutOfBoundsException e) {
                System.out.println(e.getMessage());
              }
     
     
            catch (FileNotFoundException e) {
              e.printStackTrace();
            }
            catch (IOException e) {
              e.printStackTrace();
            }
     
     
            catch(Exception e)
              {  
            	  System.out.println(e.getMessage());
              }
     
      }
    Voici la fonction de recherche




    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
    public boolean Recherche(String search)  {
        Personne per = null;
        String Ligne = null;
        String[] Info = null;
        try{
        BufferedReader fic = new BufferedReader(new FileReader(
            "C:\\Users\\souad\\Desktop\\miniProjet\\personne.txt"));
     
        while ( (Ligne = fic.readLine()) != null) {
          Info = Ligne.split(" ");
          per = (new Personne(Info[0], Info[1], Info[2]));
          if (Info[2].equals(search)) {
     
            return true;
     
          }
        }
        }
        catch(ArrayIndexOutOfBoundsException e)
        {
     
        }catch(IOException e)
        {
     
        }
        per = null;
        return false;
      }

  5. #5
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Re,

    je pense que la le mieux serait de faire tourner le programme en mode debug si ton éditeur te le permet (comme Eclipse par exemple)

    Sinon je modifierai la fonction Recherche comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    System.out.println("Je cherche le cne "+search);
    while ( (Ligne = fic.readLine()) != null) {
          Info = Ligne.split(" ");
          per = (new Personne(Info[0], Info[1], Info[2]));
          System.out.println("Je compare avec "+Info[2]);
          if (Info[2].equals(search)) {
     
            return true;
     
          }
        }
    ce qui te permettrai de voir pourquoi la comparaison n'est jamais vraie

  6. #6
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Par défaut
    re
    j'ai placé le code que tu ma donné le resltat c'etait

    je cherche le cne 67
    ajout reussi
    je cheche le cne 67

    et pourtant il exsiste déja

  7. #7
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    euh... pour la deuxième insertion il ne dit rien du tout? ni "ajout réussi" ni "machin déjà existant"?

    Ca me parait bizarre, manifestement il arrive pas à lire ton fichier, tu devrai imprimer les exceptions dans tous les catch, si ça se trouve tu as une exception et tu ne la voit pas...

  8. #8
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Par défaut
    Merci j'ai fait ce que vous m'avez dit il parait qu'il ne parcourait pas le fichier

    voici le 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public boolean Recherche(String search) throws Exception{
        Personne per = null;
        String Ligne = null;
        String[] Info = null;
     
     
    	  BufferedReader fic = new BufferedReader(new FileReader(
            "C:\\Users\\souad\\Desktop\\miniProjet\\personne.txt"));
     
     
     
     
       while ( (Ligne = fic.readLine()) != null)
       {
        System.out.println("Je cherche le cne "+search);
              Info = Ligne.split(" ");
              per = (new Personne(Info[0], Info[1], Info[2]));
              System.out.println("Je compare avec "+Info[2]);
              if (Info[2].equals(search)) {
     
                return true;  
     
     
      }
     
     
      }
       per=null;
       return false;
     
      }

  9. #9
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Par défaut
    re
    mnt j'ai un autre probleme dans la fct de mis a jour


    voici la fonction


    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
    public void UpDate(String cne) throws Exception {
     
    	    if (this.Recherche(cne)) {
    	      String Ligne = null;
    	      String[] Info = null;
    	      String temp = "";
     
    	      BufferedReader rd = new BufferedReader(new FileReader(
    	          "C:\\Users\\souad\\Desktop\\miniProjet\\personne.txt"));
     
    	      while ( (Ligne = rd.readLine()) != null) {
     
    	        if (Ligne.split(" ")[2].equals(cne)) {
    	          Personne per = null;
    	          per.cne= Ligne.split(" ")[2];
    	          System.out.println("Entrer le nom : ");
    	          per.nom = Clavier.lireString();
    	          System.out.println("Entrer le prenom : ");
    	          per.prenom = Clavier.lireString();
    	          temp += per.toString() + '\b';
    	        }
     
    	        else {
    	          temp += Ligne + '\b'; 
     
    	        }
    	      } 
                  rd.close();
     
     
    	      PrintWriter fic = new PrintWriter(new FileWriter(
    	          "C:\\Users\\souad\\Desktop\\miniProjet\\personne.txt"));
    	      fic.println(temp);
    	      fic.close();
    	      System.out.println("Modification réussie");
     
     
    	    }
     
     
    	    else {
    		      System.out.println(cne + " n'existe pas ");
    		    }
      }

    l'erreur qui donne


    Je cherche le cne 67
    Je compare avec 67
    Exception in thread "main" java.lang.NullPointerException
    at GestionBiblio.UpDate(GestionBiblio.java:217)
    at GestionBiblio.main(GestionBiblio.java:258)

  10. #10
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Personne per = null;
    per.cne= Ligne.split(" ")[2];
    Ces deux lignes vont très mal l'une après l'autre

    Manquerait un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    per = new Personne()
    quelque part

  11. #11
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Par défaut
    Merci ça a marché mais là je veux supprimer une personne et je sais pas la methode qui permet de le faire delete c pour supprimer un fchier

  12. #12
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Les seules opérations possibles sur les fichiers en java sont:
    - écraser et réécrire le fichier
    - écrire à la fin du fichier

    Il est impossible de le modifier autrement, si tu veux supprimer des lignes, il faudra donc le lire, puis le réécrire sans la ligne en trop.

    Si je peux me permettre, une base de données serait plus adaptée à ce type de stockage

  13. #13
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 38
    Par défaut
    je vais laissert la suppression et je vais te demander de me dire quel methode j'utilise pour avoir la date
    Calander getinstance() ou bien tu connais une autre qui vam'aider à faire cette fonction Emprunter des livres à une personne, avec une date de retour.

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    Calendar.getInstance() va te retourner la date courante.

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

Discussions similaires

  1. Probleme pour executer java.exe depuis le code !
    Par Battosaiii dans le forum C#
    Réponses: 1
    Dernier message: 21/11/2007, 12h55
  2. problem d'execution java/mysql
    Par mora092 dans le forum JDBC
    Réponses: 5
    Dernier message: 22/10/2007, 14h50
  3. Probleme d'execution du code java
    Par betacrack dans le forum Langage
    Réponses: 3
    Dernier message: 07/09/2006, 11h40
  4. java probleme d'execution
    Par foulla002 dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2006, 09h05
  5. [Process] Probleme d'execution d'un prog c dans un prog java
    Par Elmilouse dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 08/06/2004, 14h26

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