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 :

Try and Catch


Sujet :

Java

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Par défaut Try and Catch
    Bonsoir cher membres
    Voilà, mon problème. Je suis en pleine avance dans un exercice mais arrive à la partie ou ont dit, je vous la recopie.
    ( Deuxième version : levée d'exceptions
    Les méthodes add et remove de la classe Stock devront gérer les erreurs d’ajout d’un Produit dans un stock plein ou
    de retrait d’un Produit d’un stock vide, en levant des exceptions (StockFull ou StockEmpty) que vous aurez à
    définir. )
    Je n’arrive pas à résoudre cette partie, a codé les exceptions en fait.
    Merci de m'aider. Je vous recopie mes 3 classes afin de voir ou je peux insérer l'exception et aussi s'il y a d'éventuel modifications a faire.
    Voici le code de la classe stock
    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
        public class Stock {
    	private static int Size=0;
    	private Produit[] Content;
     
    	//Constructeur d'initialisation
    	public Stock(int taille){
    		Content=new Produit[taille];
    	}
         //Méthode d'ajout d'un  produit
    	public void add(Produit p){
    			int trouve=-1;
    			for(int i=0;i<Size;i++){
    				if(p.getName().equalsIgnoreCase(Content[i].getName())){
    					trouve=1;
    					break;
    				}
    			}
    			if(trouve==-1){
    				Content[Size]=p;
    				Size++;
    			}else{
    				System.out.println("Ce produit existe déja.");
    			}
     
    		}	
     
    	//Méthode de suppression 
    	public Produit remove(){
    		Produit p=Content[Size-1];
    		Size--;
    		return  p;
    	}
    	//Méthode pour vérifier si le stock est vide
    	public Boolean isEmpty(){
    		Boolean result;
    		if(Size==0){
    			result= true;
    		}else{
    			result=false;
    		}
    		return result;
    	}
    	//Méthode  pour vérifier  si  le  stock est plein
    	public Boolean isFull(){
    		Boolean result;
    		if(Content.length==Size){
    			result=true;
    		}else{
    			result=false;
    		}
    		return result;
    	}
    	//Méthode pour connaitre le nombre de produits dans le stock
    	public int getSize(){
    		return Size;
    	}
    	//Méthode pour lister les produits du stock.çà c'est un bonus ce n'est pas demandé
    	public void listeStock(){
    		for(int i=0;i<Size;i++){
    			System.out.println(Content[i]);
    		}
    	}
    	//Méthode tostring
    	public String toString(){
    		return "Stock contenant "+Size+" produits .Sa taille maimale est : "+Content.length;
    	}
     
    }
    Et voici aussi le main
    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
              import java.util.Scanner;
              public class Main {
     
    	   public static void main(String[] args) {
     
    		    int choix=0;
    		    String continuer="non";
    		    Scanner sc=new Scanner(System.in);
    		    Stock st=new Stock(6);
    		//Creation d'un menu
    		do
    		{
    			System.out.println("======== Gestion de Produits ===========");
    			System.out.println("1) Ajouter  un produit");
    			System.out.println("2) Nombre total de produits");
    			System.out.println("3) Le stock est il vide?");
    			System.out.println("4) Le stock est il plein?");
    			System.out.println("5) Taille du stock");
    			System.out.println("6) Liste des produits du stock");
    			System.out.println("========================================");
    		    System.out.println("Veuillez faire un choix");
    		//Récupération du choix de l'utilisateur
    		choix=sc.nextInt();
    		switch(choix){
    		case 1:
    		System.out.println("Entrez nom du produit");
    		String nom=sc.next();
    		Produit p=new Produit(nom);
    				st.add(p);
    		//System.out.println(p);
    		break;
     
    		case 2:	
    		System.out.println("Nombre total de produits créés="+(new Produit()).getNumberCreated());
    		break;
     
    		case 3:
    			if(st.isEmpty()){
    				System.out.println("Stock vide");
    			}else{
    				System.out.println("Le Stock contient des produits");
    			}
    			break;
     
    		case 4:
    			if(st.isFull()){
    				System.out.println("Stock plein");
    			}else{
    				System.out.println("Le Stock peut encore recevoir de produits");
    			}
    			break;
     
    		case 5:
    		System.out.println("Taille du stock: "+st.getSize());
    			break;
     
    		case 6:
    			st.listeStock();
    				break;
    		default:
    		System.out.println("Choix invalide");	
    		}
     
    		System.out.println("voulez vous continuer? oui/non");
    		continuer=sc.next();
    		}while(continuer.equalsIgnoreCase("oui"));
    		System.out.println("Aurevoir");
    	}
    }
    Enfin, mon code produit

    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
        public class Produit {
    	private String name;
        private static int compteur=1;
        private int number;
     
    	//Création  du constructeur
    	public Produit(){}
    	public Produit(String name){
    		number=compteur;
    		this.name=name;
    		compteur=compteur+1;	
    	}
    	//Récupération du nom du produit
        public String getName(){
    	return name;
        }
        //Récupération du numéro du produit
        public int getNumber(){
        	return number;
        }
        //nombre total de produits créés
        public int getNumberCreated(){
        	return compteur-1;
        }
        public String  toString()
        {
        	return "Nom produit:"+name+" Numéro:"+number;
        }
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    La question concerne la levée d'exception (throw ou throws) et non pas le traitement (try/catch).

    Dans ta méthode add, tu affiches un message (System.out.println("Ce produit existe déja.");) lorsque le produit est déjà dans la liste (au passage, un boolean serait plus judicieux qu'un int pour la variable trouve). Et bien, à la place d'afficher un message, tu peux soulever une exception (throw new AlreadedAddedProductException(p.getName()) par exemple,et une StockFullException comme l'enoncé le dit, ce qui me semble plus adapté à un dépassement de limite maximum (size==Content.length), un cas à gérer en plus).

    Dans la méthode remove, tu peux tester si Size==0 (au passage, en Java, il y a des conventions de nommage : les noms de variables commencent par une minuscule) et soulever une exception dans ce cas (une NoneProductException() par exemple, ou StockEmptyException).

    Si tu fais des checked-exceptions (étendant Exception), il te faudra ajouter un throws à la signature de la méthode, et faire un try/catch (ou un throws) dans l'appel.

    Attention, par ailleurs, la variable size ne devrait pas être static (partagée entre toutes les instances de classe Stock).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Par défaut Merci joel.drigo
    Bonsoir,
    Merci de votre réponse.
    Si j'ai mis tout ce temps à répondre a votre réponse, c'est à cause de ma connexion, je tiendrais compte de votre réponse.

Discussions similaires

  1. [PDO] Bloc try and catch, requête préparée pour un select, les bonnes pratiques
    Par Dendrite dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/05/2014, 09h26
  2. [Débutant] Instruction try and catch
    Par Asmlibero dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/01/2009, 10h37
  3. probleme avec try et catch
    Par salsero1 dans le forum Struts 1
    Réponses: 2
    Dernier message: 15/11/2007, 08h02
  4. UTILISATION DE TRY et CATCH
    Par demcoul dans le forum JBuilder
    Réponses: 1
    Dernier message: 15/04/2006, 15h01
  5. Pb : Exception / déroutements / try, throw, catch
    Par Bapt_from_Reims dans le forum C++
    Réponses: 5
    Dernier message: 18/03/2005, 17h55

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