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

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    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
    Membre habitué

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Points : 125
    Points
    125
    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")

  3. #3
    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 : 41
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    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

  4. #4
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 104
    Points
    104
    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");

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    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.");				
    	}
    }

  6. #6
    Membre habitué

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

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    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é.

  8. #8
    Membre chevronné
    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
    Points : 1 788
    Points
    1 788
    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 ??
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    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 ??

  10. #10
    Membre chevronné
    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
    Points : 1 788
    Points
    1 788
    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.
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    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.

  12. #12
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    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.

  13. #13
    Membre chevronné
    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
    Points : 1 788
    Points
    1 788
    Par défaut
    Citation Envoyé par Sendmi Voir le message
    à votre à vis, d'où l'utilisateur sais qu'il doit tapez le mot "end" pour terminer ?
    Pour strictement répondre à l'exercice, selon moi, tu ne dois pas le demandé à l'utilisateur. Car en le faisant tu ajoutes une donnée, demande supplémentaire qui n'est pas nécessaire.

    Pour que l'utilisateur sache comment faire pour que le programme s'arrête, il suffit de le lui dire au lancement du programme, avant de commencer la saisie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String reponse = "";
    System.out.print("Ce programme vous permet d'écrire une série de chaine");
    System.out.println("de chaine de caractères");
    System.out.println("Pour arreter la serie, veuillez entrer \"end\"");
    do{	
    //......
    Voila un peu
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  14. #14
    Membre confirmé
    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
    Points : 459
    Points
    459
    Par défaut
    Salut,

    En plus Sendmi tu obliges l'utilisateur à entrer end, sinon on boucle sur la demande d'entrer end.

    Cordialement,

    Dan

  15. #15
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Oui, vous avez tout à fait raison, il suffit de le lui dire au lancement du programme, avant de commencer la saisie pour éviter ces boucles inutiles. C'est ça ce que je cherche.

    Merci bien de vos remarques.

  16. #16
    Membre confirmé
    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
    Points : 459
    Points
    459
    Par défaut
    Salut,

    C'est ce que t'a donné deglingo592003


    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
        import java.util.Scanner;
     
        public class FinProg 
       {	
           public static void main(String[] args)
          {
             Scanner sc = new Scanner(System.in);
             String reponse = "";
     
             do{
                System.out.println("Veuillez entrer une chaine (ou end pour finir) 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. ");
          }
       }
    Juste en corrigeant cette petite faute d'inattention:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    }while(!reponse.equals("end"));
    et en modifiant la demande de saisie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Veuillez entrer une chaine (ou end pour finir) svp:");

    System.out.println("Veuillez entrer une chaine (ou end pour finir) svp:");

    Cordialement,

    Dan

  17. #17
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Points : 104
    Points
    104
    Par défaut
    effectivement, désolé pour les fautes d'inattention, mais qui ont pu être corrigées rapidement

  18. #18
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut Corrigé de l'exercice 7
    Bonjour,

    Je te remercie danimo, je suis pas contre deglingo592003, j'ai fais ce qu'il m'adit et je suis d'acord avec lui. Et l'exercice 7 le montre dont l'enoncé est :

    Exercice 7 : (le maximum d'une série de valeurs entrées au clavier)

    Ecrire un programme qui demande à l'utilisateur de saisir une séries de nombres entiers positifs. Pour arrêter la saisie, on entre la valeur zéro. Puis le programme affiche la plus grande des valeurs.

    J'ai trouvé deux grands problèmes:

    1- J'ai fais un code comme l'exercice 6, mais pour chercher la plus grande valeur il faut qu'il y a un tableau pour le chercher!

    2- Et j'ai essayé d'utiliser un tableau, mais je me suis coincé sur sa taille que je ne la connais pas.

    Je ne sais quoi faire!! J'ai pensé à ArrayList mais comment je peux faire ? Et s'il est possible de faire ça sans lui ça sera mieux.

    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
    import java.util.Scanner;
     
    public class Max 
    {	
    	public static void main(String[] args) 
    	{		
    		System.out.print("Ce programme vous permet d'écrire une série de nombres ");
    		System.out.println("entiers positifs.");
    		System.out.println("Pour arrêter la saisie, veuillez entrer le mot: \"0\"");
     
    		Scanner sc = new Scanner(System.in);		
    		int n;
     
    		do{				
    			System.out.println("\nVeuillez entrez un nombre svp:");
    			n = sc.nextInt();
    			if(n==0)
    			{
    			        break;
    			    }else
    			System.out.println("Votre nombre est: "+ n);			
     
    		}while(n != 0);
     
    	}
    }
    Merci d'avance pour vos aides. Sa me serait vraiment utile.

  19. #19
    Membre chevronné
    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
    Points : 1 788
    Points
    1 788
    Par défaut
    Il suffit tout simplement de faire le test à chaque fois que tu entres un nombre et garde la plus grande valeur.


    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
     
    import java.util.Scanner;
     
    public class Max 
    {	
    	public static void main(String[] args) 
    	{		
    		System.out.print("Ce programme vous permet d'écrire une série de nombres ");
    		System.out.println("entiers positifs.");
    		System.out.println("Pour arrêter la saisie, veuillez entrer le mot: \"0\"");
     
    		Scanner sc = new Scanner(System.in);		
    		int n,Max = 0;
     
    		do{				
    			System.out.println("\nVeuillez entrez un nombre svp:");
    			n = sc.nextInt();
    			if(n>0){
                                //compare a chaque fois, pour garder le plus grand
                                if (n > Max) Max = n; 
    			    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);	
    	}
    }
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  20. #20
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Merci sovo, oui il marche bien, et c'est facile !!! Je ne sais pas pourquoi je complique les choses. J'ai cru qu'il fallait entrez ces nombres dans un tableau puis effectuer une recherche de la plus grande valeur.

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

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