Latest Updates: calculs traitements RSS

  • Compter nombre d'occurences de traitements en incrémentant simple variable

    admin 15 h 50 min on 6 décembre 2009 | 0 Permalink | Reply
    Tags: calculs traitements, ,

    Compter en incrémentant la variable nbreCoups à chaque tour de boucle while.

    package poubelle;
    import java.util.Scanner;
    
    public class Test {
    	public static void main(String[] args){
    		Scanner sc= new Scanner(System.in);
    		System.out.println(" taille maximale du chiffre ? ");
    		int limite= sc.nextInt();
    		int rand= (int)((Math.random())*limite)+1;
    		System.out.println("chiffre à trouvé " + rand);
    		int nbreCoups=1;
    		int rand2= (int)((Math.random())*limite)+1;
    
    		while (rand2!=rand){
    			rand2=(int)((Math.random())*limite)+1;
    			nbreCoups++;
    			System.out.println("Il faut trouvé le chiffre: " + rand + " et je propose " + rand2 + " pour la tentative n° " + nbreCoups);
    		}
    	}
    }
    
     
  • Jeu loterie euromillions: (chiffres et étoiles) (2)

    admin 21 h 07 min on 30 novembre 2009 | 0 Permalink | Reply
    Tags: calculs traitements,

    Ici on complète la loterie euro millions. Lors de l’exécution du programme, nous avons le choix entre deux types de jeux différents. Le premier, classique propose à l’utilisateur de tenter de trouver la bonne combinaison de chiffres et étoiles. Le deuxième jeu propose au joueur de proposer sa combinaison de chiffre et étoiles, et l’ordinateur se charge de tenter de retrouver la bonne combinaison euro million. Le joueur détermine le nombre de tentatives que l’ordinateur peut effectuer.

    // Version non finale de la classe loterie
    package Lotterie;
    
    import java.util.Scanner;
    
    public class Loterie {
        public static void main(String[] args) {
    	GUI maVue = new GUI();
    	maVue.pack();
    	maVue.setVisible(true);
    
    	/**
    	 * A utiliser :
    	 * JTextField, JLabel, JPanel, JButton ...
    	 */
    	System.out.println(" Tapez 1 pour jouer à euromillion");
    	System.out
    	.println(" Tapez 2 pour que l'ordinateur essaye de trouver un tirage que vous avez choisis ");
    
    	Scanner scan2 = new Scanner(System.in);
    	int choixJeu = scan2.nextInt();
    	if (choixJeu == 1) {
    	    int[] resTab = new int[7];
    	    resTab[4] = 0;
    	    int i = 0;
    	    // on va générer 5 chiffres et 2 étoiles de l'euro millions à l'aide de deux boucles de type while
    	    while (i < 5) {
    		int rand = ((int) (Math.random() * 50)) + 1; // méthode random de l'objet Math pour générer un chiffre aléatoire
    		if (!isIntPresent(rand, resTab)) {
    		    resTab[i] = rand;
    		    i++;
    		}
    	    }
    	    while (i < 7) {
    		int rand = ((int) (Math.random() * 9)) + 1;
    		if (!isIntPresent(rand, resTab)) {
    		    resTab[i] = rand;
    		    i++;
    		}
    	    }
    	    System.out.println();
    
    	    // *********************************************************************************************************************************//
    
    	    // jouer
    	    int[] tabNumPlayer = new int[7];
    	    Scanner sc = new Scanner(System.in);
    	    Scanner sc2 = new Scanner(System.in);
    	    for (int k = 0; k < 5; k++) {
    		System.out.println("Entrez un chiffre de 1 à 50 inclus");
    		int nums = sc.nextInt();
    		while (nums > 50) {//simple mesure de sécurité au cas ou le joueur entre un chiffre trop grand, à améliorer
    		    System.out
    		    .println("VOUS ÊTES TROMPE, ENTREZ UN CHIFFRE ENTRE 1 ET 50 !");
    		    nums = sc2.nextInt();
    		}
    		tabNumPlayer[k] = nums;
    		if (k == 4) {
    		    for (int j = 0; j < 2; j++) {
    			k++;
    			System.out.println("Entrez une étoile de 1 à 9 inclus");
    			int numsEtoiles = sc2.nextInt();
    			while (numsEtoiles > 9) {
    			    System.out
    			    .println(" VOUS ÊTES TROMPE, ENTREZ UN CHIFFRE ENTRE 1 ET 9 ! ");
    			    numsEtoiles = sc2.nextInt();
    			}
    			tabNumPlayer[k] = numsEtoiles;
    		    }
    		}
    	    }
    	    // *********************************************************************************************************************************//
    	    bonsChiffres(tabNumPlayer, resTab);
    
    	} else {
    	    inverseLotterie(); // appel méthode inverseLotterie
    	}
    
        }
    
        // Sorti de la méthode
        // main****************************************************************
    
        // Méthode qui permet de générer une grille de numéros et étoiles appartenant à l'utilisateur
        public static int[] grilleJoueur(){
    	Scanner scan= new Scanner(System.in); // instance de l'objet Scanner
    	int[] tabGrille= new int[7];
    	int i=0;
    	while (i<5){
    	    System.out.println("Veuillez entrer un chiffre entre 1 et 50");
    	    int chiffres=scan.nextInt(); //nextInt méthode appartenant à l'objet Scanner
    	    if (chiffres>0 | chiffres>51){
    		System.out.println("Vous n'avez pas respecter les consignes, fin du jeu");
    		break;
    	    }
    	    tabGrille[i]= chiffres;
    	    i++;
    	}
    	while (i<7){
    	    System.out.println("Veuillez entrer un chiffre entre 1 et 9");
    	    int chiffres=scan.nextInt();
    	    if (chiffres>0 | chiffres>51){
    		System.out.println("Vous n'avez pas respecter les consignes, fin du jeu");
    		break;
    	    }
    	    tabGrille[i]= chiffres;
    	    i++;
    	}
    	return tabGrille;
        }
    
        // Méthode qui permet de vérifier si un chiffre se trouve dans un tableau
        public static boolean isIntPresent(int num, int[] tab) {
    	for (int i = 0; i < tab.length; i++) {
    	    if (tab[i] == num) {
    		return true;
    	    }
    	}
    	return false;
        }
    
        // Méthode qui compare 2 tableaux et qui compte le nombre de bons chiffres
        // et de bonnes étoiles
        public static boolean bonsChiffres(int[] tabNumPlayer, int[] resTab) {
    	int bonsChiffres = 0;
    	int bonnesEtoiles = 0;
    	int nbreChiffresCumules = 0;
    	int nbreEtoilesCumules = 0;
    	for (int i = 0; i < 5; i++) {
    	    for (int j = 0; j < 5; j++) {
    
    		//en résumé, les chiffres présents dans un tableau sont comparés aux chiffres proposés dans un second tableau
    
    		if (tabNumPlayer[i] == resTab[j]) {
    		    bonsChiffres++;
    		    nbreChiffresCumules += bonsChiffres;
    		}
    	    }
    	}
    	for (int i = 5; i < 7; i++) {
    	    for (int j = 5; j < 7; j++) {
    
    		if (tabNumPlayer[i] == resTab[j]) {
    		    bonnesEtoiles++;
    		    nbreEtoilesCumules += bonnesEtoiles;
    		}
    	    }
    	}
    	System.out.println();
    	System.out.println(" Vous avez " + bonsChiffres + " bons chiffres"
    		+ " Et " + bonnesEtoiles + " bonnes étoiles");
    
    	return false;
        }
    
        // le joueur donne une combinaison que l'ordinateur doit deviner. cette méthode sert à cela
        public static void inverseLotterie() {
    	int[] tabNumPlayer = new int[7];
    	Scanner sc = new Scanner(System.in);
    	Scanner sc2 = new Scanner(System.in);
    	for (int k = 0; k < 5; k++) {
    	    System.out.println("Entrez un chiffre de 1 à 50 inclus");
    	    int nums = sc.nextInt();
    	    while (nums > 50) {
    		// TODO corriger gestion erreurs (si < 1 : erreur, si pas int :
    		// exception)
    		System.out
    		.println("VOUS ÊTES TROMPE, ENTREZ UN CHIFFRE ENTRE 1 ET 50 !");
    		nums = sc2.nextInt();
    	    }
    	    tabNumPlayer[k] = nums;
    	    if (k == 4) {
    		for (int j = 0; j < 2; j++) {
    		    k++;
    		    System.out.println("Entrez une étoile de 1 à 9 inclus");
    		    int numsEtoiles = sc2.nextInt();
    		    while (numsEtoiles > 9) {
    			System.out
    			.println(" VOUS ÊTES TROMPE, ENTREZ UN CHIFFRE ENTRE 1 ET 9 ! ");
    			numsEtoiles = sc2.nextInt();
    		    }
    		    tabNumPlayer[k] = numsEtoiles;
    		}
    	    }
    	}
    	// on créer un tableau de numéro aléatoire autant de fois que de nombre
    	// de grilles autoirsées par l'utilisateur
    	System.out.println("Combien de grilles l'ordinateur peut-il jouer ?");
    	Scanner sc3 = new Scanner(System.in);
    	int nbreGrilles = sc3.nextInt();
    
    	// sommes à conserver (pour calculer la moyenne)
    	int nbreChiffresCumules = 0;
    	int nbreEtoilesCumules = 0;
    	int rang1 = 0;
    	int rang2 = 0;
    	int rang3 = 0;
    	int rang4 = 0;
    	int rang5 = 0;
    	int rang6 = 0;
    	int rang7 = 0;
    	int rang8 = 0;
    	int rang9 = 0;
    	int rang10 = 0;
    	int rang11 = 0;
    	int rang12 = 0;
    
    	for (int a = 0; a < nbreGrilles; a++) {
    	    // pour enregistrer le nombre de bons chiffres/étoiles au sein d'une
    	    // seule boucle
    	    int bonsChiffres = 0;
    	    int bonnesEtoiles = 0;
    
    	    //System.out.println();
    	    int[] resTab = new int[7];
    	    resTab[4] = 0; // TODO normalement à commenter
    	    int i = 0;
    	    while (i < 5) {
    		int rand = ((int) (Math.random() * 50)) + 1;
    		if (!isIntPresent(rand, resTab)) {
    		    resTab[i] = rand;
    		    //System.out.print(resTab[i] + " ");
    		    i++;
    		}
    	    }
    	    //System.out.print(" | ");
    	    while (i < 7) {
    		int rand = ((int) (Math.random() * 9)) + 1;
    		if (!isIntPresent(rand, resTab)) {
    		    resTab[i] = rand;
    		    //System.out.print(resTab[i] + " ");
    		    i++;
    		}
    	    }
    	    // on compare le tabaleau crée avec le tableau de chiffres proposés
    	    // par l'utilisateur
    	    // et on compte le nombre de bonne étoile
    
    	    bonsChiffres = 0;
    	    for (int z = 0; z < 5; z++) {
    		for (int j = 0; j < 5; j++)
    		    if (tabNumPlayer[z] == resTab[j])
    			bonsChiffres++;
    	    }
    	    nbreChiffresCumules += bonsChiffres;
    	    //System.out.print("   n°bons chiffres = " + bonsChiffres + "  ");
    
    	    bonnesEtoiles = 0;
    	    for (int z = 5; z < 7; z++) {
    		for (int j = 5; j < 7; j++)
    		    if (tabNumPlayer[z] == resTab[j])
    			bonnesEtoiles++;
    	    }
    	    nbreEtoilesCumules += bonnesEtoiles;
    	    //System.out.println(" n°bonnes étoiles = " + bonnesEtoiles);
    
    	    // ici, on connait le nombre de bons chiffres et de bonnes étoiles, on construit les differents rangs.
    	    if(bonsChiffres == 5 && bonnesEtoiles == 2) {
    		rang1++;
    	    }
    
    	    if(bonsChiffres == 5 && bonnesEtoiles == 1) {
    		rang2++;
    	    }
    	    if(bonsChiffres == 5 && bonnesEtoiles == 0) {
    		rang3++;
    	    }
    	    if(bonsChiffres == 4 && bonnesEtoiles == 2) {
    		rang4++;
    	    }
    	    if(bonsChiffres == 4 && bonnesEtoiles == 1) {
    		rang5++;
    	    }
    	    if(bonsChiffres == 4 && bonnesEtoiles == 0) {
    		rang6++;
    	    }
    	    if(bonsChiffres == 3 && bonnesEtoiles == 2) {
    		rang7++;
    	    }
    	    if(bonsChiffres == 3 && bonnesEtoiles == 1) {
    		rang8++;
    	    }
    	    if(bonsChiffres == 3 && bonnesEtoiles == 0) {
    		rang9++;
    	    }
    	    if(bonsChiffres == 2 && bonnesEtoiles == 2) {
    		rang10++;
    	    }
    	    if(bonsChiffres == 2 && bonnesEtoiles == 1) {
    		rang11++;
    	    }
    	    if(bonsChiffres == 2 && bonnesEtoiles == 0) {
    		rang12++;
    	    }
    	}
    	// combien de chiffres et d'étoiles l'ordinateur à t'il trouvé en moyenne ?
    	double moyenneChiffres = ((double) nbreChiffresCumules / nbreGrilles);
    	double moyenneEtoiles = ((double) nbreEtoilesCumules / nbreGrilles);
    	System.out.println();
    	System.out.println(" En moyenne par tirage, l'ordinateur à trouvé  "
    		+ moyenneChiffres + " bons chiffres et " + moyenneEtoiles
    		+ " bonnes étoiles ");
    	// on affiche les résultats finales du tirage, autrement dit, combien l'ordinateur à trouvé de bons chiffres et de bonnes étoiles
    	System.out.println();
    	System.out.println( "Résultats de rang 1  : " + rang1);
    	System.out.println( "Résultats de rang 2  : " + rang2);
    	System.out.println( "Résultats de rang 3  : " + rang3);
    	System.out.println( "Résultats de rang 4  : " + rang4);
    	System.out.println( "Résultats de rang 5  : " + rang5);
    	System.out.println( "Résultats de rang 6  : " + rang6);
    	System.out.println( "Résultats de rang 7  : " + rang7);
    	System.out.println( "Résultats de rang 8  : " + rang8);
    	System.out.println( "Résultats de rang 9  : " + rang9);
    	System.out.println( "Résultats de rang 10 : " + rang10);
    	System.out.println( "Résultats de rang 11 : " + rang11);
    	System.out.println( "Résultats de rang 12 : " + rang12);
        }
    }
    

    Suggestions améliorations jeu euro millions à apporter pour les prochaines versions :
    • Améliorer la gestion des erreurs et exceptions lorsque l’utilisateur entre ses chiffres (avec bloc try catch)
    • Créer une interface graphique avec swing pour le jeu
    • Améliorer les statistiques (tableau de résultats final) dans le jeu numéro 1 lorsque le joueur doit deviner une grille euro million générée par l’ordinateur.
    • Crée un système d’argent (au lieu de demander combien de tentatives ou combien de grilles, on demande pour combien d’euros l’utilisateur désir-il jouer à euro million.

     
  • Jeu loterie euromillions: Méthode tirage (chiffres et étoiles) (1)

    admin 20 h 28 min on 30 novembre 2009 | 0 Permalink | Reply
    Tags: calculs traitements,

    Nouveau mini projet java créer jeu java : une loterie qui ressemble à la loterie euro millions. Cet exercice va permettre de s’exercer sur le fonctionnement des boucles, utilisation de l’objet Math pour générer des chiffres aléatoire. Cet exercice permet aussi de s’exercer sur la création de méthodes java personnelles, selon ses besoins propres.
    But du jeu : On commence simplement par créer une méthode tirage :

    package Lotterie;
    
    public class TirageMethode {
    	public static int[] Tirage(){
    	    // on instancie un tableau de type Integer[] avec 7entrés
    	    // qui correspondront aux sept chiffre à trouver (5chiffres + 2étoiles)
    
    		int[] tabTirage= new int[7];
    		int i=0;
    		while (i<5){
    		    //Utilisation méthode random sur objet Math pour générer un chiffre aléatoire
    			int rand=((int)(Math.random())*50)+1;
    			// méthode isIntPresent qui vérifie si un int est présent dans un tableau
    			// et renvoi une réponse de type booléene
    			if(!isIntPresent(rand,tabTirage)){
    				tabTirage[i]=rand;
    				i++;
    			}
    		}
    		// ici i=4, à partir d'ici on génère des chiffres de 1 à 9 (sur 2 tours de boucle)
    		while (i<7){
    			int rand=((int)(Math.random())*8)+1;
    			if(!isIntPresent(rand,tabTirage)){
    				tabTirage[i]=rand;
    				i++;
    			}
    		}
    		// retourne un tableau de int[] qui correspond aux chiffres générés par le tirage
    		return tabTirage;
    	}
    	// méthode qui retourne soit true si le chiffre est présent dans le tableau, soit false si le int n'est pas présent
    	public static boolean isIntPresent (int n, int[]tab){
    		for (int i=0;i<tab.length;i++){
    			if(tab[i]==n){
    				return true;
    			}
    		}return false;
    	}
    }
    
     
  • Choisir chiffre à filtrer: parser tableau contrôle d'occurence

    admin 20 h 05 min on 30 novembre 2009 | 0 Permalink | Reply
    Tags: calculs traitements,

    Choisir un chiffre de filtrage : parser tableau pour vérifier présence d’un chiffre

    package Chapitre2;
    import java.util.Scanner;
    
    public class Ex2_6_bis {
    
        public static void main(String[] args) {
    	Scanner scan=new Scanner(System.in);
    	int[] tab=new int[5];
    	for(int i=0;i<tab.length;i++){
    	    tab[i]=(int) (Math.random() *10 + 1);
    	    System.out.print(tab[i]);
    	    System.out.print(" ");
    	}
    	System.out.println("Entrer un chiffre de filtrage");
    	int choix=scan.nextInt();
    
    	int[] restab=new int[5];
    	int i = 0;
    	int j = 0;
    	boolean premierRemplacementFait = false;
    	while(i < tab.length) {
    	    if(tab[i] != choix || premierRemplacementFait) {
    		restab[j] = tab[i];
    		j++;
    	    } else {
    		premierRemplacementFait = true;
    	    }
    	    i++;
    	}
    	for(i = 0; i < j; i++){
    	    System.out.print(restab[i]);
    	    System.out.print(" ");
    	}
        }
    }
    
     
  • Calculler moyenne de 5 chiffres entiers entrés dans des tableaux

    admin 19 h 59 min on 30 novembre 2009 | 0 Permalink | Reply
    Tags: calculs traitements,

    package Chapitre2;
    import java.util.Scanner;
    
    public class Ex2_1 {
    
        public static void main (String[] args){
    	Scanner scan= new Scanner(System.in);
    	System.out.println("Entrer 5chiffres svp");
    	int[]tab=new int[5];
    	//récupération des numéros entrés
    	int num1 = scan.nextInt();
    	int num2 = scan.nextInt();
    	int num3 = scan.nextInt();
    	int num4 = scan.nextInt();
    	int num5 = scan.nextInt();
    	//chiffres reçus entrés dans le tableau tab
    	tab[0]= num1;
    	tab[1]= num2;
    	tab[2]= num3;
    	tab[3]= num4;
    	tab[4]= num5;
    	// calcule de la moyenne des 5 chiffres entrés + affichage
    	double moyenne= (tab[0]+tab[1]+tab[2]+tab[3]+tab[4])/5;
    	System.out.println(moyenne);
        }
    }
    
     
  • Chiffre Mystère: Méthode random de l'objet de type Math

    admin 19 h 48 min on 30 novembre 2009 | 0 Permalink | Reply
    Tags: calculs traitements,

    Jeu console Eclipse : faire générer et faire trouver un chiffre entier aléatoire. Créer un bout de code qui fait en sorte de générer un chiffre entier aléatoirement, et doit ensuite retrouver quel est ce chiffre.
    L’utilisateur délimite l’ordre de grandeur du chiffre à trouvé. Ensuite l’ordinateur génère un tel chiffre. L’ordinateur se charge aussi des tentatives de découverte du chiffre caché.

    package Chapitre1;
    
    import java.util.Scanner;
    
    public class ChiffreMystere {
    
    	public static void main (String[] args){
    		Scanner scan= new Scanner(System.in);
    		Scanner scan2= new Scanner(System.in);
    		int taille=0;
    		int nbreTentatives=0;
    		System.out.println("Choisissez un chiffre maximale");
    		taille=scan.nextInt(); // méthode nextInt propre à l'objet Scanner
    		System.out.println("Combien de tentative l'ordinateur à t'il droit ?");
    		nbreTentatives=scan2.nextInt();
    		// pour générer un entier aléatoire, on utilise la méthode random de l'objet Math.
    		// la classe random appliquée à l'objet Math génére un chiffre aléatoire entier plus grand que zero
    		// et plus petit que 1 (entre 0,000... et 0,99999...)
    		// d'où le fait que l'on multiplie le chiffre généré par
    		// la variable qui représente le choix de l'utilisateur
    		int num=(int) ((Math.random())*taille)+1;
    		int rand = 0;
    		int nombreFois=1; // variable qui sert à compter le nombre de tentative du cpu pour retrouve rles chiffres
    	for (int i=0;i<nbreTentatives;i++){
    		int rand2=(int)(Math.random()*taille)+1;
    		rand=rand2;
    		// ici on fais afficher à la console Eclipse le traitement que le cpu effectue. On fais afficher le nombre de
    		// tentative effectuée par le cpu, quel est le chiffre à trouver et quel st le chiffre généré par tour de boucle i
    		System.out.println("Tentative n° " + nombreFois + " il faut trouver le chiffre " + num + " et je propose le chiffre: " + rand);
    		nombreFois++;
    		if (rand==num){
    			System.out.println("bien joué ordi, trouvé en " + nombreFois);
    		}
    	}
    	System.out.println(" Le chiffre à trouvé était " + num);
    	}
    }
    
     
  • Récupérer retour méthode

    admin 12 h 36 min on 30 novembre 2009 | 0 Permalink | Reply
    Tags: calculs traitements,

    Petite exemple simple, comment récupérer retour d’une méthode en Java.

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package return_method;
    
    public class Main {
    
        public static void main(String[] args) {
            int chiffre = randomer(); // on récupère le contenu de la méthode dans la variable chiffre
            System.out.println(chiffre);
        }
      // création d'une méthode randomer qui va retourner un chiffre aléatoire entre 1 et 100 inclus
        public static int randomer(){
            int rand = (int)(Math.random()*100)+1; // pas besoin de faire un import de la classe Math
            return rand;
        }
    }
    
     
  • Calculatrice java: faire une calculette simple

    admin 15 h 15 min on 14 octobre 2009 | 1 Permalink | Reply
    Tags: , calculs traitements,

    Création d’une calculatrice simple en java :

    Voici le code commenté qui permet de créer une calculatrice (telle la calculatrice que l’on retrouve dans les accessoires Windows pré installés). Cette calculatrice est tout ce qu’il y a de plus simple, il ne s’agit pas d’une calculatrice de type scientifique. Néanmoins cet exercice sur la création d’une calculatrice permet de commencer à toucher aux interfaces graphiques en java. Les interfaces graphiques permettent au programme crée d’être visible et utilisable pour les utilisateurs auxquels un programme est destiné.

    Cet exemple de calculatrice en java est directement issu du livre Java pour enfant de Yakov Fain. Le code de cette calculatrice se décompose en 2 classes. La classe Moteur de calcul qui va permettre de formuler l’algorithme de calcul utilisée par la calculatrice. Et la classe calculatrice elle-même, qui reprend les caractéristiques de l’interface graphique que l’on souhaite utilisée pour construire la calculatrice.
    Code la classe moteur de calcul. Algorithmes qui permettent à la calculatrice de fonctionner.

    Après compilation du code par éclipse, la calculatrice devrait avoir cette aspect:
    calculatrice.jpg

    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.text.NumberFormat;
    import java.text.ParsePosition;
    import javax.swing.JButton;
    public class MoteurCalcul implements ActionListener {
    	Calculatrice parent; // une référence à la Calculatrice
    	char actionSélectionnée = ' '; // +, -, /, ou *
    	double résultatCourant = 0;
    	NumberFormat formatNombres = NumberFormat.getInstance();
    	// un objet capable de lire et présenter les nombres
    	// Le constructeur stocke la référence à la fenêtre
    	// Calculatrice dans la variable membre parent
    	MoteurCalcul(Calculatrice parent) {
    		this.parent = parent;
    	}
    	public void actionPerformed(ActionEvent événement) {
    		// Retrouve la source de l'action
    		JButton boutonCliqué = (JButton) événement.getSource();
    		String texteChampAffichage =
    			parent.champAffichage.getText();
    		double valeurAffichée = 0;
    		// Retrouve le nombre présenté dans le champ texte
    		// s'il n'est pas vide
    		if (!"".equals(texteChampAffichage)) {
    			valeurAffichée =
    				// analyse la chaîne de caractères
    				formatNombres.parse(
    						texteChampAffichage,
    						new ParsePosition(0) /* ne sert pas */).
    						// puis donne sa valeur en tant que double
    						doubleValue();
    		}
    		Object sourceEvénement = événement.getSource();
    		// Pour chaque bouton d'action, mémorise l'action
    		// sélectionnée, +, -, /, ou *, stocke la valeur courante
    		// dans la variable résultatCourant et vide le champ
    		// Affichage avant l'entrée du nombre suivant
    		if (sourceEvénement == parent.boutonPlus) {
    			actionSélectionnée = '+';
    			résultatCourant = valeurAffichée;
    			parent.champAffichage.setText("");
    		}
    		else if (sourceEvénement == parent.boutonMoins) {
    			actionSélectionnée = '-';
    			résultatCourant = valeurAffichée;
    			parent.champAffichage.setText("");
    		}
    		else if (sourceEvénement == parent.boutonDiviser) {
    			actionSélectionnée = '/';
    			résultatCourant = valeurAffichée;
    			parent.champAffichage.setText("");
    		}
    		else if (sourceEvénement == parent.boutonMultiplier) {
    			actionSélectionnée = '*';
    			résultatCourant = valeurAffichée;
    			parent.champAffichage.setText("");
    		}
    		else if (sourceEvénement == parent.boutonEgale) {
    			// Effectue les calculs en fonction de actionSélectionnée
    			// Modifie la valeur de la variable résultatCourant
    			// et affiche le résultat
    			if (actionSélectionnée == '+') {
    				résultatCourant += valeurAffichée;
    				// Convertit le résultat en le transformant en String
    				// à l'aide de formatNombres
    				parent.champAffichage.setText(
    						formatNombres.format(résultatCourant));
    			}
    			else if (actionSélectionnée == '-') {
    				résultatCourant -= valeurAffichée;
    				parent.champAffichage.setText(
    						formatNombres.format(résultatCourant));
    			}
    			else if (actionSélectionnée == '/') {
    				résultatCourant /= valeurAffichée;
    				parent.champAffichage.setText(
    						formatNombres.format(résultatCourant));
    			}
    			else if (actionSélectionnée == '*') {
    				résultatCourant *= valeurAffichée;
    				parent.champAffichage.setText(
    						formatNombres.format(résultatCourant));
    			}
    		}
    		else {
    			// Pour tous les boutons numériques, ajoute le libellé
    			// du bouton au champ texte
    			String libelléBoutonCliqué = boutonCliqué.getText();
    			parent.champAffichage.setText(texteChampAffichage +
    					libelléBoutonCliqué);
    		}
    	}
    }
    

    Code de la classe Moteurcalcul qui défini un algorithme de calcul pour la calculatrice.

    import javax.swing.*;
    import java.awt.GridLayout;
    import java.awt.BorderLayout;
    public class Calculatrice {
    	// Déclare et instancie les composants de la fenêtre
    	JButton bouton0 = new JButton("0");
    	JButton bouton1 = new JButton("1");
    	JButton bouton2 = new JButton("2");
    	JButton bouton3 = new JButton("3");
    	JButton bouton4 = new JButton("4");
    	JButton bouton5 = new JButton("5");
    	JButton bouton6 = new JButton("6");
    	JButton bouton7 = new JButton("7");
    	JButton bouton8 = new JButton("8");
    	JButton bouton9 = new JButton("9");
    	JButton boutonVirgule = new JButton(",");
    	JButton boutonEgale = new JButton("=");
    	JButton boutonPlus = new JButton("+");
    	JButton boutonMoins = new JButton("-");
    	JButton boutonDiviser = new JButton("/");
    	JButton boutonMultiplier = new JButton("*");
    	JPanel contenuFenêtre = new JPanel();
    	JTextField champAffichage = new JTextField(30);
    	// Constructeur
    	Calculatrice() {
    		// Affecte le gestionnaire de disposition pour ce panneau
    		BorderLayout disposition = new BorderLayout();
    		contenuFenêtre.setLayout(disposition);
    		// Ajoute le champ d'affichage en haut de la fenêtre
    		contenuFenêtre.add("North", champAffichage);
    		// Crée le panneau avec le quadrillage qui contient
    		// 12 boutons – les 10 boutons numériques et ceux
    		// représentant la virgule et le signe égale
    		JPanel panneauChiffres = new JPanel();
    		GridLayout dispositionChiffres = new GridLayout(4, 3);
    		panneauChiffres.setLayout(dispositionChiffres);
    		panneauChiffres.add(bouton1);
    		panneauChiffres.add(bouton2);
    		panneauChiffres.add(bouton3);
    		panneauChiffres.add(bouton4);
    		panneauChiffres.add(bouton5);
    		panneauChiffres.add(bouton6);
    		panneauChiffres.add(bouton7);
    		panneauChiffres.add(bouton8);
    		panneauChiffres.add(bouton9);
    		panneauChiffres.add(bouton0);
    		panneauChiffres.add(boutonVirgule);
    		panneauChiffres.add(boutonEgale);
    		// Ajoute le panneau des chiffres à la zone centrale
    		// de la fenêtre
    		contenuFenêtre.add("Center", panneauChiffres);
    		// Crée le panneau avec le quadrillage qui contient 4
    		// boutons d'opération – Plus, Moins, Diviser, Multiplier
    		JPanel panneauOpérations = new JPanel();
    		GridLayout dispositionOpérations = new GridLayout(4, 1);
    		panneauOpérations.setLayout(dispositionOpérations);
    		panneauOpérations.add(boutonPlus);
    		panneauOpérations.add(boutonMoins);
    		panneauOpérations.add(boutonMultiplier);
    		panneauOpérations.add(boutonDiviser);
    		// Ajoute le panneau des opérations à la zone est
    		// de la fenêtre
    		contenuFenêtre.add("East", panneauOpérations);
    		// Crée le cadre et lui affecte son contenu
    		JFrame frame = new JFrame("Calculatrice");
    		frame.setContentPane(contenuFenêtre);
    		// Affecte à la fenêtre des dimensions suffisantes pour
    		// prendre en compte tous les contrôles
    		frame.pack();
    		// Affiche la fenêtre
    		frame.setVisible(true);
    		// Instancie le récepteur d'événements et l'enregistre
    		// auprès de chaque bouton
    		MoteurCalcul moteurCalcul = new MoteurCalcul(this);
    		bouton0.addActionListener(moteurCalcul);
    		bouton1.addActionListener(moteurCalcul);
    		bouton2.addActionListener(moteurCalcul);
    		bouton3.addActionListener(moteurCalcul);
    		bouton4.addActionListener(moteurCalcul);
    		bouton5.addActionListener(moteurCalcul);
    		bouton6.addActionListener(moteurCalcul);
    		bouton7.addActionListener(moteurCalcul);
    		bouton8.addActionListener(moteurCalcul);
    		bouton9.addActionListener(moteurCalcul);
    		boutonVirgule.addActionListener(moteurCalcul);
    		boutonPlus.addActionListener(moteurCalcul);
    		boutonMoins.addActionListener(moteurCalcul);
    		boutonDiviser.addActionListener(moteurCalcul);
    		boutonMultiplier.addActionListener(moteurCalcul);
    		boutonEgale.addActionListener(moteurCalcul);
    	}
    	public static void main(String[] args) {
    		// Instancie la classe Calculatrice
    		Calculatrice calc = new Calculatrice();
    	}
    }
    
     
  • Calculer moyenne d'entiers + exemple gestion erreurs/exeptions

    admin 16 h 31 min on 19 septembre 2009 | 0 Permalink | Reply
    Tags: calculs traitements, ,

    import java.util.Scanner;  // on appel l'objet scanner de la classe util.
    public class MoyenneChiffres { 
    
    	public static void main (String[] Args){
    		Scanner monScanner = new Scanner(System.in);
    		double somme = 0, i, moyenne;
    		String valeurEntrée;
    		for(i = 0; i<4; i++) {
    			System.out.println("Veuillez entrer un nombre entre 0 et 20.");
    			valeurEntrée = monScanner.next();  // méthode next de l'objet scanner qui renvoi le caractère suivant
    
    			if(valeurEntrée.equals("x")) { // pour quitter
    				System.out.println("Ciao !");
    				return;
    			} else if(valeurEntrée.equals("m")) { // pour afficher la moyenne ET quitter
    				break;
    			}
    
    			try {  // on utilise le bloc try catch pour gérer les erreurs
    				double d = Double.parseDouble(valeurEntrée);
    				if(d >= 0 &amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp; d <= 20)
    					somme += d; // rappel le signe += signifie qu'on ajoute la valeur à la valeur déjà presente dans la variable
    				else {
    					System.out.println("Vous avez entré un nombre non compris entre 0 et 20.");
    					i--;
    				}
    			} catch(NumberFormatException e) {
    				System.out.println("NumberFormatException: vous n'avez pas entré un double !");
    				i--; // pour contrer le i++
    			}
    		}
    		if(i > 0) {
    			moyenne = somme/i;
    			System.out.println("La moyenne est de : " + moyenne);
    		} else {
    			System.out.println("Pas de moyenne à calculer !");
    		}
    	}
    }
    
     
  • Classe simple qui gère promotion commerciale: calcul de réduction

    admin 14 h 42 min on 19 septembre 2009 | 0 Permalink | Reply
    Tags: calculs traitements,

    public class Promo {
    
    }
    
    class Promo {
    	String nom;
    	float prix;
    	long codebarre;
    	String description;
    
    	Promo (String n, String d, long cb, float p){
    		nom = n;
    		description = d;
    		codebarre = cb;
    		prix = p;
    	}
    	Promo (String n, long cb, float p){
    		nom = n;
    		description = "N/A";
    		codebarre = cb;
    		prix = p;
    	}
    
    	public double getPrice() {//création de la méthode getPrice() qui retourne la valeur de la variable prix
    		return prix;
    	}
    	public double getPrice (int q) {//surcharge de méthode
    		if(q > 5) {
    			return q*prix * 0.90;  //formule qui permet de calculer une réduction de 10%, si l'on achète 5 fois le même article
    		} else return q*prix;
    	}
    
     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
esc
cancel