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

Langage Java Discussion :

Switch/Case - boucle sur une case ou sur l'ensemble


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Switch/Case - boucle sur une case ou sur l'ensemble
    Bonjour,

    Je me présente NEVOA. Je débute en Dev Langage Java (cela fait 10 jours que j'ai commencé les cours sur le site OpenClasseRoom que je recommande vivement). J’apprends seul dans mon coin durant mais pause, mais trajet dans le RER ou Métro Parisien !

    J'ai commencé dans le Dev par le HTML ou je me suis codé un site WEB (Une page d'accueil et 6 autres pages, j'ai laché le HTML je jour ou j'ai ouvert mon site dans Dreamweaver 7 et qu'il me l'a détruit, un vrai massacre, un viole psychologique car je n'avais pas de sauvegarde. J'ai touché un peu un Langage C, j'ai fait une calculette Simple cas y complètement abouti sauf que je n'ai pas travail sur une interface graphique. Je tente de reprendre mais étude (car j'ai 29ans, j'occupe un poste de Help Desk) et souhaite intégrer un contrat pros en BTS option DEV. Les présentations sont faites, passons à mon problème!


    Voila je cherche à apprendre seul, donc ce que je ne veux pas une solution toute faite fourni sur un plateau d'argent ! J'ai envie de me casser la tête! (enfin un peu et je ne peu pas ré-inventer ou révolutionner le DEV en Langage JAVA) ! J'aimerai plutôt des conseils me permettant d'apprendre la vision, la philosophie qu'un bon développeur doit avoir. Des conseils d'organisations fourni en indice (enfin reproduire un micro climat de sale de cour). Mon projet du moment et jusqu’à son aboutissement est une simple calculette (Interface Eclipse).

    Mon problème est d’insérer une boucle dans un Menu Switch-Case, enfin j'y arrive mais elle bug pas mal ma boucle. Je vous passe mon code source pour ceux qu'ils veulent en débattre avec moi et qu'il veulent le tester. J'ai aussi beaucoup de mal à lire (retranscrire en texte comme une histoire mon code) car je pense que si j'arrivai à lire mon code comme une histoire j'arriverai surement à trouver mes erreurs !

    Code JAVA : 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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    import java.util.Scanner;
    public class Majorité {
     
    	private static Scanner sc;
    	private static Scanner menu_choix;
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		menu_choix = new Scanner(System.in);
     
    	char retourAc = 'q';
    	while (retourAc == 'q')//======================================================================> While retour Accueil
    	{ //===========================================================================================> Ouverture du While
    		System.out.println("\n\t\t*********************** Bienvenue dans la calculette ******************************* \n");
     
    		sc = new Scanner(System.in);
    		System.out.println("Que voulez-vous faire : \t1 : Addition\n\t\t\t\t2 : Soustraction\n\t\t\t\t3 : Multiplication\n\t\t\t\t4 : Division");
    		String choix = menu_choix.nextLine();
     
    		int choix_i;
    		choix_i = Integer.valueOf(choix).intValue();    //Cast du "String choix" en "int choix_i"		
    		switch (choix_i)
    			{ //=====================================================================================> Ouverture du Switch
    		case 1:
    			char continueAd = 'c';
    			while (continueAd == 'c')
    			{ //=====================================================================================> Ouverture du while qui éxécute en boucle l'addition.
     
    			System.out.println("\nVous avez choisi de faire une addition\n");	
    			//Scanner sc = new Scanner(System.in); //================================================> Inutil, déja activé au début du menu!
    			System.out.println("Saisir les nombres à additionner");
    			double nbre1A = sc.nextDouble();
    			double nbre2A = sc.nextDouble();
    			double sommeA = (double) (nbre1A + nbre2A);
    			System.out.println("Votre calcule :\t" + nbre1A + "  +  " + nbre2A + "  =\t" + sommeA);			
     
    			//{//====================================================================================> Provoque une boucle infini!!!!!!!!!!
    			System.out.println("Voulez-vous quitter ? (Quitte or Continue)");
    			continueAd = menu_choix.nextLine().charAt(0);		
    			System.out.println("\n---------------------------------------------------------------------------------------------------");
     
    			System.out.println("Saisir le nombre à ajouter à votre somme : \t" + sommeA);
    			double nbre2Acont = sc.nextDouble();
    			double sommeAcont = (double) (sommeA + nbre2Acont);
    			System.out.println("Votre calcule :\t" + sommeA + "  +  " + nbre2Acont + "  =\t" + sommeAcont);
    			System.out.println("\n---------------------------------------------------------------------------------------------------");
     
    			System.out.println("\nVoulez-vous quitter ? (Quitte or Continue)");
    			continueAd = menu_choix.nextLine().charAt(0);
     
    			} //=====================================================================================> Fermeture du while qui éxécute en boucle l'addition.
    		break;
     
    		case 2:
    			System.out.println("\nVous avez choisi de faire une Soustraction\n");
     
    			System.out.println("Saisir les nombres à soustraire");
    			double nbre1S = sc.nextDouble();
    			double nbre2S = sc.nextDouble();
    			double sommeS = (double) (nbre1S - nbre2S);
    			System.out.println("Votre calcule :\t" + nbre1S + "  +  " + nbre2S + "  =\t" + sommeS);
    		break;
     
    		case 3:
    			System.out.println("\nVous avez choisi de faire une Multiplication\n");
     
    			System.out.println("Saisir les nombres à multiplier");
    			double nbre1M = sc.nextDouble();
    			double nbre2M = sc.nextDouble();
    			double sommeM = (double) (nbre1M * nbre2M);
    			System.out.println("Votre calcule :\t" + nbre1M + "  +  " + nbre2M + "  =\t" + sommeM);
    		break;
     
    		case 4:
    			System.out.println("\nVous avez choisi de faire une Division\n");
     
    			System.out.println("Saisir les nombres à diviser");
    			double nbre1D = sc.nextDouble();
    			double nbre2D = sc.nextDouble();
    			double sommeD = (double) (nbre1D / nbre2D);
    			System.out.println("Votre calcule :\t" + nbre1D + "  +  " + nbre2D + "  =\t" + sommeD);
    		break;
     
    		default:
    		System.out.println("Il faut davantage travailler.");
     
    		}// ----------------------------------------------------------------------------------------- Fermeture du Switch
    	}// ----------------------------------------------------------------------------------------- Fermeture du While
    	}
     
    }

    Merci d'avance à tous ceux qui qui vont se prêter au jeu !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 553
    Points : 21 611
    Points
    21 611
    Par défaut
    Pour commencer, tu devrais séparer un peu ton code :
    chaque case devrait faire un appel de méthode correspondant au choix, suivi d'un break, et c'est tout. Donc ça te fait 4 méthodes à faire et à appeler.

    Ça te permettra d'y voir un peu plus clair. C'est toujours un bon début : quand tu as un bloc de code assez long : l'éclater en méthodes. D'abord ça évite de devoir tout gérer d'un coup, mais en plus, une méthode, ça a un nom. Et ce nom, tu vas pouvoir le choisir pour qu'il décrive ce que fait la méthode. C'est comme ça qu'on fait en sorte que le code "raconte une histoire." Chaque méthode est un verbe. Le sujet et le complément, ça dépend comment on s'organise.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Pour commencer, tu devrais séparer un peu ton code :
    chaque case devrait faire un appel de méthode correspondant au choix, suivi d'un break, et c'est tout. Donc ça te fait 4 méthodes à faire et à appeler.

    Ça te permettra d'y voir un peu plus clair. C'est toujours un bon début : quand tu as un bloc de code assez long : l'éclater en méthodes. D'abord ça évite de devoir tout gérer d'un coup, mais en plus, une méthode, ça a un nom. Et ce nom, tu vas pouvoir le choisir pour qu'il décrive ce que fait la méthode. C'est comme ça qu'on fait en sorte que le code "raconte une histoire." Chaque méthode est un verbe. Le sujet et le complément, ça dépend comment on s'organise.
    Merci beaucoup de prendre de ton temps pour me répondre.

    Effectivement, ici là! Je poursuit mon cours que j'ai récupéré sur le site openclasseroom, la je viens de finir le chapitre des tableaux et commence un chapitre qui parle des Méthodes.
    Se qu'il me manque d'après tes conseils. (Encore Merci d’ailleurs). Donc je vais m'y mettre activement!

    J'ai refait mon code avec en remplaçant la boucle <while> par la boucle <do-while>, avec elle j’obtiens un meilleur résultat.

    Cet à dire:
    La boucle <do-while> me permet de mieux géré la partie de code à bouclé et me permet d’éclaircir mon code source (enfin la je le trouve moin brouillon).
    Je vais mettre la MAJ de mon code source pour que tu suive mon évolution.
    Sauf que j'ai toujours un problème avec le " Non , Retour au Menu principal " qui ne s’exécute pas.
    Et un autre petit problème que j'ai, c'est quand je fait "Oui je veux continuer" plusieurs fois, la somme est bien repris à la première mais pas sur les suivants calcule ou le programme reprend la deuxième somme. (Mais là aussi je pense que c'est dut au faite que je n'ai pas fini le cour!)
    La je vais me concentrer sur le cour que j'ai pour éviter de poser des questions " Troll "!

    Code JAVA : 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
    83
    84
    85
    86
    87
    88
    import java.util.Scanner;
    public class Majorité {
     
    	private static Scanner sc;
    	private static Scanner menu_choix;
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		char retourAc = 'O';// continueAd = 'c';
    		menu_choix = new Scanner(System.in);
    		sc = new Scanner(System.in);
     
    		System.out.println("\n\t\t************************ Bienvenue dans la calculette ******************************** \n");
     
    	//while (retourAc == 'q')//======================================================================> While retour Accueil
    	//{ //===========================================================================================> Ouverture du While
     
    	do{ //===========================================================================================> Overture de la Boucle Principale
     
    		System.out.println("Que voulez-vous faire : \t1 : Addition\n\t\t\t\t2 : Soustraction\n\t\t\t\t3 : Multiplication\n\t\t\t\t4 : Division");
    		String choix = menu_choix.nextLine();
    		int choix_i;
    		choix_i = Integer.valueOf(choix).intValue();    //Cast du "String choix" en "int choix_i"		
     
     
    		switch (choix_i){ //=====================================================================================> Ouverture du Switch
    			case 1:
    				//char continueAd = 'c';
    				//while (continueAd == 'c')
    				//{ //===========================================================================================> Ouverture du while qui éxécute en boucle l'addition.	
    	//do{ //=======================================================================================================> tant que reponse n'est pas q ou c
    				System.out.println("\nVous avez choisi de faire une addition\n");	
    				//Scanner sc = new Scanner(System.in); //========================================================> Inutil, déja activé au début du menu!
    				System.out.println("Saisir les nombres à additionner");
    				double nbre1A = sc.nextDouble();
    				double nbre2A = sc.nextDouble();
    				double sommeA = (double) (nbre1A + nbre2A);
    				System.out.println("Votre calcule :\t" + nbre1A + "  +  " + nbre2A + "  =\t" + sommeA);			
    				//{//====================================================================================> Provoque une boucle infini!!!!!!!!!!
    				System.out.println("Voulez-vous quitter ? (Quitte or Continue)");
    				retourAc = menu_choix.nextLine().charAt(0);		
    				System.out.println("\n---------------------------------------------------------------------------------------------------");
    	do{ //=======================================================================================================> tant que reponse n'est pas q ou c
    				System.out.println("Saisir le nombre à ajouter à votre somme : \t" + sommeA);
    				double nbre2Acont = sc.nextDouble();
    				double sommeAcont = (double) (sommeA + nbre2Acont);
    				System.out.println("Votre calcule :\t" + sommeA + "  +  " + nbre2Acont + "  =\t" + sommeAcont);
    				System.out.println("\n---------------------------------------------------------------------------------------------------");
    				System.out.println("\nVoulez-vous continuer ? (O/N)");
    				retourAc = menu_choix.nextLine().charAt(0);
    				//} //=====================================================================================> Fermeture du while qui éxécute en boucle l'addition.
    	} while (retourAc != 'O' && retourAc != 'N'); //=====================================================> tant que reponse n'est pas O ou N
    			break;
     
    			case 2:
    				System.out.println("\nVous avez choisi de faire une Soustraction\n");
    				System.out.println("Saisir les nombres à soustraire");
    				double nbre1S = sc.nextDouble();
    				double nbre2S = sc.nextDouble();
    				double sommeS = (double) (nbre1S - nbre2S);
    				System.out.println("Votre calcule :\t" + nbre1S + "  +  " + nbre2S + "  =\t" + sommeS);
    			break;
     
    			case 3:
    				System.out.println("\nVous avez choisi de faire une Multiplication\n");
    				System.out.println("Saisir les nombres à multiplier");
    				double nbre1M = sc.nextDouble();
    				double nbre2M = sc.nextDouble();
    				double sommeM = (double) (nbre1M * nbre2M);
    				System.out.println("Votre calcule :\t" + nbre1M + "  +  " + nbre2M + "  =\t" + sommeM);
    			break;
     
    			case 4:
    				System.out.println("\nVous avez choisi de faire une Division\n");
    				System.out.println("Saisir les nombres à diviser");
    				double nbre1D = sc.nextDouble();
    				double nbre2D = sc.nextDouble();
    				double sommeD = (double) (nbre1D / nbre2D);
    				System.out.println("Votre calcule :\t" + nbre1D + "  +  " + nbre2D + "  =\t" + sommeD);
    			break;
     
    		default:
    		} // ----------------------------------------------------------------------------------------- Fermeture du Switch
    	} while(retourAc == 'q');// ----------------------------------------------------------------------------------------- Fermeture du While
     
    	} // ===============================================================================================> Fermeture public static void main(String[] args) 
    } //====================================================================================================> Fermeture public class Majorité

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Salut,

    je sais pas si ton problème vient de là mais ton cast me parait casse-cou. Tu as une méthode du Scanner qui te permet de récupérer directement un int..
    Je te laisse chercher comme tu veux te casser la tête

    Rajoute peut être un choix 5 :Quitter. Ca va être plus compacte et plus propre je pense..

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/03/2014, 14h18
  2. [AC-2010] Simuler un clic sur une page web sur une image javascript
    Par alex en droit dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/04/2012, 13h22
  3. Imprimer sur une page web sur une imprimante spécifique
    Par bleuerouge dans le forum Windows Forms
    Réponses: 0
    Dernier message: 07/12/2009, 09h51
  4. Pb sur une requête DELETE sur une chaine
    Par astrolane dans le forum Sybase
    Réponses: 4
    Dernier message: 16/02/2009, 09h11
  5. Réponses: 3
    Dernier message: 25/10/2007, 11h47

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