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

avec Java Discussion :

Blocage durant l'exécution d'un code Java


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut Blocage durant l'exécution d'un code Java
    Bonjour,

    je suis débutante en java ,j'ai eu un petit problème lors de l’exécution de ce programme qui créé un tableau de n élément de type personne et remplit le tableau avec des information du tableau, recherche et affiche les personne dont le code est égale a cp donnée

    Le programme est :
    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
    import java.util.*;
    public class Adresse 
    {//attributs
    	static int numéro,code_postale;
    	String ville,nom_rue;
    	//méthodes
    	Scanner e=new Scanner (System.in);
    	void lire()
    	{
    	System.out.print("donner l'adresse :");
    	numéro=e.nextInt();
    	code_postale=e.nextInt();
    	ville=e.next();
    	nom_rue=e.next();
     
    	}
    	void afficher()
    	{System.out.print("l'adresse est:"+"numéro="+numéro+"nom_rue="
    			          +nom_rue+"code_postale="+code_postale+"ville="+ville);
     
    }
    	void modifier()
    	{System.out.print("donner la nouvelle adresse");
    	numéro=e.nextInt();
    	code_postale=e.nextInt();
    	ville=e.next();
    	nom_rue=e.next();
    	}
    }//fin de la classe adresse
    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
    import java.util.Scanner;
     
     
    public class personne
    {
    	String nom,prenom;
    	Adresse adresse = new Adresse();
    	int taille,p[];//attributs
     
     
    		//les méthodes
    	Scanner e=new Scanner (System.in);
     
    	void lire()
    	{System.out.print("donner le nom,prenom et l'adresse de la personne:");
    	nom=e.next();
    	prenom=e.next();
    	adresse.lire();}
     
    	void affiche()
    	{System.out.print("nom="+nom+"prenom="+prenom);
    	adresse.afficher();}
     
    	void modifier()
    	{System.out.print("Voulez vous modifier l'adresse de la personne:");
    	adresse.modifier();}
    		}//fin de la classe
    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
    import java.util.*;
    public class prog_princ {
    @SuppressWarnings("static-access")
    public static void main(String args[])
    {int n;
    System.out.print("donner le nbre d'elemnet n: ");
    Scanner e=new Scanner (System.in);
    	n=e.nextInt();
    	personne p[]= new personne[n];
    	int i;//création du tableau p
    	for (i=0;i<=n;i++)
    	{p[i]= new personne();<============================== "l’exécution se bloque ici"
    	p[i].lire();
    	}
    	//recherche et affichage de toutes les personnes dont le code postale est=cp
    	System.out.print("donner un code postale");
    	int cp=e.nextInt();
    	for (i=0;i<=n;i++)
    	{if (p[i].adresse.code_postale ==cp) p[i].affiche();}
    	
    	
    	//modifier l'adresse d'une personne de nom donné et affichage du contenue du tableau
    	
    	System.out.print("donner un nom:");
    	String nom = e.next();
    	for(i=0;i<=n;i++)
    	{if (p[i].nom==nom )p[i].modifier();p[i].affiche();}		
    	}
    }
    Quel est le problème ? Et comment dois-je faire pour le corriger ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Il n'y a qu'un seul System.in, tu ne peux donc pas créer plus d'un Scanner dessus*. L'expression new Scanner(System.in) ne doit être exécutée qu'une seule fois dans tout ton programme.
    L'idée étant de l'exécuter au tout début, de garder le Scanner sous le coude, et que tous ceux qui ont besoin de s'en servir, aillent le chercher et s'en servent.


    * La raison en est, qu'un Scanner est obligé de lire plus de caractères que ceux qu'on lui demande, pour savoir quand il doit s'arrêter. Il garde les caractères en trop dans un buffeur qui lui appartient, et il commencera par eux la prochaine fois qu'on lui demande de lire quelque chose. Si on crée plusieurs Scanners sur la même entrée, ils vont donc tous lire des caractères que les autres ne liront jamais, et qui donc, "disparaissent". Ça ne peut pas marcher. On ne peut pas créer plus d'un Scanner sur une même entrée et espérer que ça fera ce qu'on veut.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [XL-2003] Message durant l'exécution d'un code
    Par dlight dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/02/2010, 10h17
  2. exécution d'un code Java en Labview
    Par kastillio dans le forum LabVIEW
    Réponses: 1
    Dernier message: 23/10/2009, 11h52
  3. Exécution d'un script ant avec un code JAVA
    Par nibor2luxe dans le forum ANT
    Réponses: 1
    Dernier message: 23/01/2008, 13h32
  4. Réponses: 7
    Dernier message: 21/08/2007, 20h21
  5. Exécuter du code Java à partir d'un rapport
    Par medbass dans le forum BIRT
    Réponses: 6
    Dernier message: 16/08/2006, 16h01

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