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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Futur développeur android
    Inscrit en
    décembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Futur développeur android
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : décembre 2017
    Messages : 15
    Points : 10
    Points
    10

    Par défaut Programme qui ne marche pas

    Bonjour à tous !
    Pourquoi mon programme ne marche pas ?
    Mon programme est le suivant :

    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
    import java.util.Scanner;
     
    public class FinProgramme {
     
    	public static void main(String[] args) {
     
    		Scanner sc = new Scanner(System.in);
     
    		String phrase;
    		do	{		
    		System.out.println("Ecrivez une phrase");
    		String phrase = sc.nextLine();
    		System.out.println("Vous avez écrit : "+phrase);
     
    			System.out.println("Voulez vous arrêter ? Si oui, tapez 'end'");
    			String phrase = sc.nextLine();
     
    		} while (phrase != "end");
    		System.out.println("à bientot");
     
     
    	}
    }

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

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

    Informations forums :
    Inscription : avril 2007
    Messages : 25 452
    Points : 48 705
    Points
    48 705

    Par défaut

    on ne compare pas des strings avec == ou similaires, cela compare les instances pas les valeurs. Pour comparer des objets, on utilise ma méthode equals

  3. #3
    Membre à l'essai
    Homme Profil pro
    Futur développeur android
    Inscrit en
    décembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Futur développeur android
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : décembre 2017
    Messages : 15
    Points : 10
    Points
    10

    Par défaut

    Comment fais tu en pratique ? je ne connais pas cette méthode..

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 541
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 541
    Points : 19 595
    Points
    19 595

    Par défaut

    Hello,

    tu vois dans ton code quand tu fais des choses comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bidule.println("machin chouette")
    ?

    Le principe est le même avec une méthode equals() :

    C'est ça qu'il faut faire en lieu et place d'un == pour comparer des objets, tels que les String.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    octobre 2005
    Messages
    2 649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2005
    Messages : 2 649
    Points : 4 602
    Points
    4 602

    Par défaut

    Bonjour

    Dans ton programme, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (!phrase.equals("end"));
    Comme pour 100% des débutants, cela nécessite quelques explications.
    Pour commencer fait l'expérience suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            String str1 = new String("kika");
            String str2 = new String("kika");
            System.out.println(str1);
            System.out.println(str2);
            System.out.println(str1 == str2);
    ce bout de programme te dit que str1 et str2 sont différents
    alors que quand on fait un System.out.println on voit bien qu'ils ont le même texte ... incroyable ! Java serait-il bugué ?

    Que non pas.

    Les str1 et str2 sont deux objets String distincts.
    Et l'opérateur == teste s'il s'agit du même objet.

    Du coup, si on veut savoir si deux objets on LA MEME VALEUR alors on utilise equals.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Membre à l'essai
    Homme Profil pro
    Futur développeur android
    Inscrit en
    décembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Futur développeur android
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : décembre 2017
    Messages : 15
    Points : 10
    Points
    10

    Par défaut

    Super merci, je comprends mieux

    Par contre j'ai toujours un problème dans mon programme, Eclipse me dit que "String phrase" est dupliqué et qu'il faudrait renommer chaque nom d'objet String, or moi je veux utiliser un seul et même objet
    Je ne comprends pas, si vous pouviez m'éclairer

    Je vous remets 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
    import java.util.Scanner;
     
    public class FinProgramme {
     
    	public static void main(String[] args) {
     
    		Scanner sc = new Scanner(System.in);
     
    		String phrase;
    		do	{		
    		System.out.println("Ecrivez une phrase");
    		String phrase = sc.nextLine();
    		System.out.println("Vous avez écrit : "+phrase);
     
    			System.out.println("Voulez vous arrêter ? Si oui, tapez 'end'");
    			String phrase = sc.nextLine();
     
    		} while (!phrase.equals("end"));
    		System.out.println("à bientot");
     
     
     
    	}
    }

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

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

    Informations forums :
    Inscription : avril 2007
    Messages : 25 452
    Points : 48 705
    Points
    48 705

    Par défaut

    Cela veux dire je déclare que je vais utiliser une variable que j'appelle phrase et qui sera de type String. Tu ne peux avoir ça qu'une seule fois par bloc car le nom doit être unique dans le bloc. Hors dans ton code cette déclaration apparaît 3 fois.
    veux dire "j'appelle la méthode et je stocke sa valeur de retour dans la variable appelée phrase.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String phrase = sc.nextLine()
    n'est jamais qu'un raccourcis pour combiner les deux instructions.

    Donc ton code est à corriger comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		String phrase;
    		do	{		
    			System.out.println("Ecrivez une phrase");
    			phrase = sc.nextLine();
    			System.out.println("Vous avez écrit : "+phrase);
     
    			System.out.println("Voulez vous arrêter ? Si oui, tapez 'end'");
    			phrase = sc.nextLine();

  8. #8
    Membre à l'essai
    Homme Profil pro
    Futur développeur android
    Inscrit en
    décembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Futur développeur android
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : décembre 2017
    Messages : 15
    Points : 10
    Points
    10

    Par défaut

    Merci !!!
    Oui en effet j'ai initialisé la variable 3 fois et la même.. Merci beaucoup !!

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

Discussions similaires

  1. [Débutant] Petit programme d'entrainement qui ne marche pas
    Par Banls dans le forum C#
    Réponses: 3
    Dernier message: 20/11/2015, 17h16
  2. un programme trop simple qui ne marche pas
    Par smp82 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/10/2008, 15h46
  3. Programme super simple qui ne marche pas!
    Par _Michel dans le forum Visual C++
    Réponses: 2
    Dernier message: 07/01/2008, 18h50
  4. Programme de sudoku qui ne marche pas! :(
    Par DOC doc doc dans le forum C++
    Réponses: 18
    Dernier message: 20/03/2007, 11h56
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

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