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 :

Exercices en java à corriger


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut Exercices en java à corriger
    Bonjour,

    Je veux apprendre la programmation, et pour cela, j'ai récupéré sur Internet, une série d'exercices pour les coder, mais je trouve quelque difficultés. Pouvez-vous m'aider ?

    Par exemple pour l' exercice 6 dont l'enoncé est:

    Exercice 6: Mettre fin au programme grâce à une sésie

    Ecrire un programme qui demande à l'utilisateur d'entrer une chaine de caractères, puis affiche cette chaine. Ainsi de suite! le programme s'arrête seulement si l'utilisateur entre la chaine "end". A ce moment, le programme affiche: fin du programme.

    j'ai fais un essaie mais la dernière boucle ne s'arrête plus. voici mon code:

    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
    import java.util.Scanner;
     
    public class FinProgramme 
    {	
    	public static void main(String[] args)
    	{		
    		Scanner sc = new Scanner(System.in);
    		String quiter =" ";
    		char reponse = ' ';
     
    	do{				
    			System.out.println("Veuillez entrez une chaine svp:");
    			String chaine = sc.nextLine();
    			System.out.println("Votre chaine de caractère est: "+ chaine);
     
    		do{	
    			System.out.println("Voulez-vous réessayer ? (O/N)");
    			reponse = sc.nextLine().charAt(0);
    		}while(reponse != 'N' & reponse != 'O');
     
    	}while(reponse == 'O');
     
    		do{
    			System.out.println("Pour terminer écrivez le mot: end");
    	        quiter = sc.nextLine();
    		}while(quiter != "end");
     
    		System.out.println("Fin du programme");				
    	}
    }
    Merci beaucoup pour toute idée ou suggetion.

    Pour ceux qui veulent jetter un coup d'oeil dans la série (dont je vous ai parler) et de m'aider, vous la trouvrez ci-joints:

    Série d'exercices.pdf

    Merci bien pour vos aides.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    1) "quitter" s'écrit avec 2 "t"

    2) Pour ton problème, les chaînes de caractères ne se comparent pas avec les opérateurs "==" ni "!=" mais avec la méthode "equals()" de la classe String :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (chaine1.equals(chaine2)) { ... }
    [EDIT]Grilled [/EDIT]
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    Bonjour,

    Je vous remercie de m'avoir répondu, j'ai fais vos suggestions, oui mon problème est résolu.

    à deglingo592003:

    Oui vous avez raison mon code est plein de boucle, les tiens sont meilleurs, ils sont courts et font le but. Merci infiniment.


    Avec mon code voila le code finale:

    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
    import java.util.Scanner;
     
    public class FinProg 
    {	
    	public static void main(String[] args)
    	{		
    		Scanner sc = new Scanner(System.in);		
    		String quitter =" ";
    		char reponse = ' ';
     
    	do{				
    			System.out.println("Veuillez entrez une chaine svp:");
    			String chaine = sc.nextLine();
    			System.out.println("Votre chaine de caractère est: "+ chaine);
     
    		do{	
    			System.out.println("Voulez-vous réessayer ? (O/N)");
    			reponse = sc.nextLine().charAt(0);
    		}while(reponse != 'N' & reponse != 'O');
     
    	}while(reponse == 'O');
     
    		do{
    			System.out.println("Pour terminer écrivez le mot: end");
    	        quitter = sc.nextLine();	        
     
    		}while(! quitter.equals("end"));		
    	        System.out.println("Fin du programme.");				
    	}
    }

  4. #4
    Membre confirmé

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Par défaut
    N'oublie pas de cocher le tag :

  5. #5
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    Bonjour,

    Comme le titre du sujet l'indique, j'ai beaucoup d'exercices à corriger, donc j'ai pas encore terminé .

    Merci de m'avoir signalé.

  6. #6
    Membre Expert
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Par défaut
    Citation Envoyé par Sendmi Voir le message
    Oui vous avez raison mon code est plein de boucle, les tiens sont meilleurs, ils sont courts et font le but. Merci infiniment.
    Et pourquoi tu gardes alors ton code qui n'est ni esthétique, ni optimisé, pire encore ne répond pas à la question t'a été posé contrairement à celui de deglingo592003 ??

  7. #7
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    Bonjour,

    Jai pas gardé mon code, mais j'ai voulu quand même le corrigé. C'est tous.


    Que voulez-vous dire de ça ?

    pire encore ne répond pas à la question t'a été posé contrairement à celui de deglingo592003 ??

  8. #8
    Membre Expert
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Par défaut
    Dans ton exercice on dit bien

    Citation Envoyé par Exo 6
    Ainsi de suite! le programme s'arrête seulement si l'utilisateur entre la chaine "end".
    Alors, je vois pas pourquoi tu demandes a l'utilisateur s'il veut continuer ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    do{	
        System.out.println("Voulez-vous réessayer ? (O/N)");
        reponse = sc.nextLine().charAt(0);
    }while(reponse != 'N' & reponse != 'O');
    ou s'il veux terminer ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    do{
       System.out.println("Pour terminer écrivez le mot: end");
       quitter = sc.nextLine();	        
    }while(! quitter.equals("end"));
    A aucun moment ce n'est demandé dans ton Exercice.

    Voila pour quoi je dis que tu ne réponds pas vraiment à la question posée. Certes tu ajoutes des contrôles, mais on ne te demande pas de faire ca.

  9. #9
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    Citation Envoyé par sovo Voir le message
    Et pourquoi tu gardes alors ton code qui n'est ni esthétique, ni optimisé, pire encore ne répond pas à la question t'a été posé contrairement à celui de deglingo592003 ??

    Jai pas gardé mon code, mais j'ai voulu quand même le corriger. C'est tous. En plus, mon code répond à ma question tu peux le tester.

  10. #10
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    Salut,

    @ sovo:

    à votre à vis, d'où l'utilisateur sais qu'il doit tapez le mot "end" pour terminer ?
    Donc, il faut ajouter des indices pour le quider n'est-ce pas ?

    Merci pour vos remarques.

  11. #11
    Membre confirmé

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Par défaut
    Le type String est une classe Java, on ne met pas de '=' pour les comparer.
    Utilise la métode equals :

    maString.equals("end")

  12. #12
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    pour rajouter à ce qui est mis ci dessus
    Pour cela tu n'as pas besoin de plusieurs boucles.

    si tu souhaite garder ton do/while

    tu peut toujours faire
    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
     
    Scanner sc = new Scanner(System.in);
    		String reponse = "";
     
    		do{	
    			//ici ton traitement pour demander la chaine
    			System.out.println("Veuillez entrez une chaine svp:");
    			reponse = sc.nextLine();
                            if(!reponse.equals("end")
    			    System.out.println("Votre chaine de caractère est: "+ reponse);
     
     
    		}while(!reponse.equals("end"));
    		System.out.println("fin du programme. ");
    	}
    comme cela tant que l'utilisateur n'a pas rentrer la chaine "end" le programme continue

    ou sinon autre manière avec une autre boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while(true){
    		    //ici ton traitement pour demander la chaine
    		    System.out.println("Veuillez entrez une chaine svp:");
    		    reponse = sc.nextLine();
    		    if(reponse.equals("end")){
    		        break;
    		    }else{
    		        System.out.println("Votre chaine de caractère est: "+ reponse);
    		    }
    		}
    		System.out.println("fin du programme");

  13. #13
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    Bonjour danimo,

    J'ai fais vos suggestions et le code marche très bien, le voici:

    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
    import java.util.InputMismatchException;
    import java.util.Scanner;
     
    public class Max2 
    {	
         public static void main(String[] args) 
         {		
            Scanner sc = new Scanner(System.in);			
            int max_int = Integer.MAX_VALUE;
            int n=0, max=0;               		
    	do{	
    	     System.out.println("\nVeuillez entrer un nombre compris entre une valeur minimale 0 (pour terminer) et maximale " + max_int  + " svp:");		    
    	       try{
    	                 n = sc.nextInt();
    	                 //compare a chaque fois, pour garder le plus grand
                                     if (n > max)                     
                                     max = n;                    
    	       }		    
    	       catch(InputMismatchException e)
    	       {
    	           e.printStackTrace();
    	           System.out.println("\nVous avez saisi une valeur supérieure à la valeur maximale " + max_int);
    	           // sans la ligne suivante on bouclerait sur l'erreur
    	           sc = new Scanner(System.in); 
                        }
    	System.out.println("Votre nombre est: "+ n);
     
            }while(n != 0);
     
    		//Affiche le plus grand nombre de la serie
            System.out.println("Le plus grand nombre de la serie est : "+ max);	
    	}
    }
    C'est vraiment difficile d'imaginer qu'il faut ajouter cette ligne dans le bloc catch.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sc = new Scanner(System.in);
    Et il faut encore toujour lire le message entier d'erreur pour savoir ou exactement faut placer le bloc try, c'est ça.

    Merci infiniment pour tous vos aides.

  14. #14
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut sc = new Scanner(System.in); dans catch
    Si on a saisi une valeur hors limites, ou non numérique, il faut "réinitialiser" sc qui sinon resterait avec cette valeur qui serait détectée erronée sur la ligne

    Pour les exceptions je te conseille de consulter ce lien:

    http://java.developpez.com/faq/java/?page=exception

    Autre point important:

    Ne pas oublier la cloture, en fin de programme sans oublier de "try/catcher"

    Dan

  15. #15
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Si tu as des questions sur un des autres exercisses, il serait peut être mieux d'ouvrir un autre topic (un par exercisse).

    Cordialement,

    Dan

  16. #16
    Membre averti
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Par défaut
    Bonjour,

    D'accord, merci beaucoup pour ces informations et de votre aide.

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

Discussions similaires

  1. Exercice sur Java
    Par romain1 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 16/06/2008, 19h53
  2. Livre d'exercice pour Java Oo
    Par hardokin dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 02/04/2008, 15h35

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