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 :

Mon script est-il correcte ?


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut Mon script est-il correcte ?
    Bonjour a tous ,

    comme je débute en java , je m'exerce a des petits exercices.

    Mon but ici est de simuler un distributeur de pizza par exemple.
    donc je supposes qu'on accepte 3 pieces de 1 euros de 2 euros et de 5 euros(même si ca n'existe pas).

    que pensez vous de mon script ? il y a t'il des choses que je peux améliorer ?

    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
     
    import java.util.Scanner;
     
     
    public class sdz1 {
     
    	public static void main (String[] ars)
    	{
    		int pizza = 8; //le prix de la pizza
    		byte piece1EU, piece2EU, piece5EU;
    		byte piece;
    		int totalrecu = 0; //on initialise le prix total a 0 euro
    		int monnais=0;
     
    		Scanner sc= new Scanner(System.in);//instancer la class scanner importer
     
    		do
    		{
     
    		System.out.println("Quelle pièce introduisez vous ?");
    		piece = sc.nextByte();
     
    		switch (piece)
    		{
    		case 1:
    			piece1EU = piece;
    			System.out.println("vous avez introduit 1 piece de 1 euro");
    			break;
     
    		case 2:
    			piece2EU = piece;
    			System.out.println("vous avez introduit 1 piece de 2 euros");
    			break;
     
    		case 5:
    			piece5EU = piece;
    			System.out.println("vous avez introduit 1 piece de 5 euros");
    			break;
     
    		default:
    		    piece=0;
    			System.out.println("Votre piece n'est pas accepté!!");
    		}
     
    		totalrecu = totalrecu + piece;
    		System.out.println("votre totat est de " + totalrecu +"euros");
     
    		}while (totalrecu < pizza); //si la somme total n'est pas suppérieur a 8 euro on recommence
     
    		System.out.println("La somme total a été atteint");
     
    		monnais = totalrecu - pizza;
     
    		if(monnais > 0)
    		{
    			System.out.println("je vous rends la monnaie de la somme de :" + monnais);
    		}
    		else 
    		{
    			System.out.print("prix exacte");
    		}	
    	}
     
     
    }
    merci pour votre réponse

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    prenez l'habitude de mettre votre code dans un package, et non pas dans le package par défaut:

    un nom de classe doit commencer par une majuscule suivant les conventions
    ces variables sont inutiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte piece1EU, piece2EU, piece5EU;
    respectez les conventions java pour l'indentation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    		do {
     
    			//......
    			switch (piece) {
    				case 1:
    					piece1EU = piece;
    				//.....
    			}
    		//....
    			System.out.println("votre totat est de " + totalrecu +"euros");
     
    		} while (totalrecu < pizza); //si la somme total n'est pas suppérieur a 8 euro on recommence
    les variables doivent avoir un nom qui suit le convention lowerCamelCase:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int totalRecu = 0; //on initialise le prix total a 0 euro

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    merci de ta réponse tchize

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    package monpackage;
    je n'ai pas encore pencher sur le package ?

    qu'est ce que cela veut dire ??

    c'est vrai que j'ai homis de mettre une Majuscule sur le nom de la class, c'est aussi vrai en poo php

    pourquoi ces variables sont inutiles ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    byte piece1EU, piece2EU, piece5EU;
    pourant je les utilisent en variables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    est ce que cela change a quelque chose lorsque je vais ajouter une nouvelle fonctionnalité, le distributeur va utiliser les ces variables pour défnire quelle piece va t'il rendre ?
    mais peut être que j'ai mal compris

    il est vrai que je n'ai pas respecté l'indentation dans la boucle switch

    donc en résumer cela donne:

    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
     
    import java.util.Scanner;
     
     
    public class DistribPizza{
     
    	public static void main (String[] ars)
    	{
    		int pizza = 8; //le prix de la pizza
    		byte piece1EU, piece2EU, piece5EU;
    		byte piece;
    		int totalrecu = 0; //on initialise le prix total a 0 euro
    		int monnais=0;
     
    		Scanner sc= new Scanner(System.in);//instancer la class scanner importer
     
    		do
    		{
    		   System.out.println("Quelle pièce introduisez vous ?");
    		   piece = sc.nextByte();
     
    		   switch (piece)
    		   {
    		      case 1:
    			    piece1EU = piece;
    			    System.out.println("vous avez introduit 1 piece de 1 euro");
    			    break;
     
    		      case 2:
    			    piece2EU = piece;
    			    System.out.println("vous avez introduit 1 piece de 2 euros");
    			  break;
     
    		      case 5:
    			    piece5EU = piece;
    			    System.out.println("vous avez introduit 1 piece de 5 euros");
    			    break;
     
    		      default:
    		        piece=0;
    			    System.out.println("Votre piece n'est pas accepté!!");
    		   }
     
     
    		  totalrecu = totalrecu + piece;
    		  System.out.println("votre totat est de " + totalrecu +"euros");
     
    		}while (totalrecu < pizza); //si la somme total n'est pas suppérieur a 8 euro on recommence
     
     
    		System.out.println("La somme total a été atteint");
     
    		monnais = totalrecu - pizza;
     
    		if(monnais > 0)
    		{
    			System.out.println("je vous rends la monnaie de la somme de :" + monnais);
    		}
    		else 
    		{
    			System.out.println("prix exacte");
    			System.out.println("Envoyer la pizza!");
    		}
     
     
     
     
    	}
     
     
    }

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Citation Envoyé par neufrdb Voir le message
    je n'ai pas encore pencher sur le package ?

    qu'est ce que cela veut dire ??
    ca veux dire que ta classe est dans les package du même nom. Sans non, elle est dans le package par défaut, qui n'est par reconnu par les jar, par exemple.

    pourquoi ces variables sont inutiles ??
    Parce que vous ne les utilisez pas et qu'elles ont toujours la même valeur: 1, 2 et 5 respectivement.[/QUOTE]

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    merci de toutes ces précisions

    j'ai compris que je doit toujours ranger la class dans mon package donc je l'écrit au tout début:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    package DistribPizza;
    je serais que si les variables on ne les change jamais de valeur alors il n'est pas necessaire des les déclarées.

    je souhaiterais maintenant faire une boucle qui permet de l'exécuter a chaque fois qu'on met un piece dans le distrib il calclule la somme et envoye la pizza

    la boucle do while est t'elle adéquate pour mon problème?

    cela donnerai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tant que une des pieces a été introduit
       //traitement de la demande
    est correcte de tapez ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    do {
    // ....
    System.out.println("Pizza a 8 euro, je rends la monnaie");
    // traitement de la demande
    } while ( (piece1EU || piece2EU ||piece5EU) > 1 )
    présenter comme ceci cette boucle est t'elle infinie, que chaque fois j'aurai ma pizza, il pourra en fournire d'autre ??

    en php j'avais l'autorisation de mettre (empty) en java peut t'on le faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (piece1EU != empty)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Points : 69
    Points
    69
    Par défaut
    j'ai finalement utiliser la boucle while pour faire une boucle infinie

    voici le scipt
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    package Test; //on l'indique pour ne pas qu'il appartiennte par le package default;
    import java.util.Scanner; 
     
     
    public class Test{
     
    	public static void main (String[] ars)
    	{
    		int pizza = 8; //le prix de la pizza
    		byte piece;
    		byte piece1EU, piece2EU, piece5EU; //je n'ai pas retirer cette ligne sinon cela fait une erreur de compilation
    		int totalrecu = 0; //on initialise le prix total a 0 euro
    		int monnais = 0;
    		byte envoyerPizza = 0;
     
    		Scanner sc= new Scanner(System.in);//instancer la class scanner importer
     
    		while (true)
    		{
    			totalrecu = 0; //intialisation a 0 du total recu à 0
    			  do{
    		        	System.out.println("Pizza a 8 euros, je rend la monnaie");
     
    		    		do
    		    		{
    		    		   System.out.println("Quelle pièce introduisez vous ?");
    		    		   piece = sc.nextByte();
     
    		    		   switch (piece)
    		    		   {
    		    		      case 1:
    		    			    piece1EU = piece;
    		    			    System.out.println("vous avez introduit 1 piece de 1 euro");
    		    			    break;
     
    		    		      case 2:
    		    			    piece2EU = piece;
    		    			    System.out.println("vous avez introduit 1 piece de 2 euros");
    		    			  break;
     
    		    		      case 5:
    		    			    piece5EU = piece;
    		    			    System.out.println("vous avez introduit 1 piece de 5 euros");
    		    			    break;
     
    		    		      default:
    		    		        piece=0;
    		    			    System.out.println("Votre piece n'est pas accepté!!");
    		    		   }
     
     
    		    		  totalrecu = totalrecu + piece;
    		    		  System.out.println("votre totat est de " + totalrecu +"euros");
     
    		    		}while (totalrecu < pizza); //si la somme total n'est pas suppérieur a 8 euro on recommence
     
     
    		    		System.out.println("La somme total a été atteint");
     
    		    		monnais = totalrecu - pizza;
     
    		    		if(monnais > 0)
    		    		{
    		    			System.out.println("je vous rends la monnaie de la somme de :" + monnais);
    		    		}
    		    		else 
    		    		{
    		    			System.out.println("prix exacte");
    		    			System.out.println("Envoyer la pizza!");
    		    		}
     
    		        } while( envoyerPizza >1);
     
    		}
     
     
     
    	}
     
     
    }
    je n'ai trouvé que cette solution pour faire une boucle infinie

    maintenant si j'efface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int piece1EU, piece2EU, piece3EU
    j'ai cette erreur de compilation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    	piece1EU cannot be resolved
    	piece2EU cannot be resolved
    	piece5EU cannot be resolved
     
    	at Test.Test.main(Test.java:31)

  7. #7
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    En fait je pense que vous avez mal saisit ce que vous à dit Tchize...

    Il n'est pas inutile de déclarer une variable constante (qui ne change pas de valeur) ! Au contraire, si elle est utilisé, il FAUT la déclarer.

    Ce que Tchize à voulu vous dire ici, c'est que vous affectez constamment les valeurs 1,2,5 à vos variables 1EU,2EU,5EU, ce qui est inutile. Autant leur affecter leur valeur directement à la déclaration :

    Mais, ce que vous n'avez pas saisit, est que vous ne lisez JAMAIS le contenu de ces variables. Vous y stocké les valeurs 1,2,5, mais elles ne sont jamais utilisé.

    Vous pouvez donc supprimer ces 3 variables de votre code, et non pas uniquement leur déclaration. Car il est alors normal que le compilateur ne soit pas d'accords... Pensez à supprimer les affectations présentes dans votre boucle "switch case" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    piece1EU = piece;
    piece2EU = piece;
    piece5EU = piece;
    Le compilo ne râlera plus pour cela...

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

Discussions similaires

  1. [MCD] Mon script est-il correct ?
    Par batchi dans le forum Schéma
    Réponses: 1
    Dernier message: 16/02/2011, 15h50
  2. Réponses: 5
    Dernier message: 10/11/2007, 10h20
  3. Mon Singleton est-il correct ?
    Par olive_le_malin dans le forum C++
    Réponses: 11
    Dernier message: 15/12/2006, 15h06
  4. Mon formulaire est-il correct?
    Par biglittlekiss dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2006, 12h29
  5. Réponses: 3
    Dernier message: 23/02/2006, 08h30

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