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 :

Problèmes avec la méthode str.indexOf(str)


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Problèmes avec la méthode str.indexOf(str)
    Bonjour
    J'ai un problème avec Java, et je ne sais pas si c'est ma syntaxe qui est fausse, Java qui bug ou l'IDE.
    Je doit rechercher une chaîne de caractère dans un String et j'utilise str.indexOf() pour tester la présence ou l'absence de la chaîne.
    J'entre le code, lance le programme et les résultats n'ont aucun sens:
    Nom : wtf.PNG
Affichages : 242
Taille : 12,9 Ko
    (La méthode gagne est bien appelé dans une autre méthode)
    J'ai essayer plusieurs librairies Java au cas ou le problème viendrait de là mais le résultat ne change pas.
    Je ne sais pas si il y a d'autre méthode que str.indexOf() mais j'ai aussi testé le str.contains() et le résultat reste faux.


    Je met le code complet à disposition pour ceux qui voudrait tester:
    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
     
    	public static String genere() {
    		char tab[] = { ':', '-', '(', ')' };
    		String car = "";
    		for (int i = 0; i < 10; i++) {
    			car += tab[(int) (Math.random() * 4)];
    		}
    		return car;
    	}
     
    	public static boolean gagne(String s) {
    		System.out.println(s.indexOf(":-)"));
    		return (s.indexOf(":"+"-"+")") > -1);
    	}
     
    	public static void joue() {
    		System.out.println(genere());
    		if (gagne(genere()) == true)
    			System.out.println("Gagné !");
    		else
    			System.out.println("Perdu !");
    	}
    Merci de me dire si j'utilise mal la méthode mais je viens de commencé les Strings.

  2. #2
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

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

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Points : 176
    Points
    176
    Par défaut
    Citation Envoyé par Atlas4218 Voir le message
    Bonjour
    J'ai un problème avec Java, et je ne sais pas si c'est ma syntaxe qui est fausse, Java qui bug ou l'IDE.
    Je doit rechercher une chaîne de caractère dans un String et j'utilise str.indexOf() pour tester la présence ou l'absence de la chaîne.
    J'entre le code, lance le programme et les résultats n'ont aucun sens:
    Nom : wtf.PNG
Affichages : 242
Taille : 12,9 Ko
    (La méthode gagne est bien appelé dans une autre méthode)
    J'ai essayer plusieurs librairies Java au cas ou le problème viendrait de là mais le résultat ne change pas.
    Je ne sais pas si il y a d'autre méthode que str.indexOf() mais j'ai aussi testé le str.contains() et le résultat reste faux.


    Je met le code complet à disposition pour ceux qui voudrait tester:
    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
     
    	public static String genere() {
    		char tab[] = { ':', '-', '(', ')' };
    		String car = "";
    		for (int i = 0; i < 10; i++) {
    			car += tab[(int) (Math.random() * 4)];
    		}
    		return car;
    	}
     
    	public static boolean gagne(String s) {
    		System.out.println(s.indexOf(":-)"));
    		return (s.indexOf(":"+"-"+")") > -1);
    	}
     
    	public static void joue() {
    		System.out.println(genere());
    		if (gagne(genere()) == true)
    			System.out.println("Gagné !");
    		else
    			System.out.println("Perdu !");
    	}
    Merci de me dire si j'utilise mal la méthode mais je viens de commencé les Strings.
    Hello,

    Précision : Tu gagnes si tu as : - ) à la suite? ou même avec : - ( ) ou - : ) tu gagnes?

    Car le str.indexOf(":" + "-" +")") est la même chose que str.indexOf(":-)");

    Donc il sera true si et seulement si tu as : - ) à la suite les uns des autres.
    Si ils ne sont pas forcement à la suite, tu peux utiliser le String contains pour chacun des symboles.

    Jéremy

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Précision : Tu gagnes si tu as : - ) à la suite? ou même avec : - ( ) ou - : ) tu gagnes?
    Car le str.indexOf(":" + "-" +")") est la même chose que str.indexOf(":-)");
    [...]
    Si ils ne sont pas forcement à la suite, tu peux utiliser le String contains pour chacun des symboles.
    Non les symboles doivent être dans cet ordre: ":-)" et pas dans un autre
    j'ai essayer de concaténer les symboles dans le str.indexOf() pour voir si ça permettais de régler le problème (mais je me suis bien aperçus que ça ne changeait rien)
    Donc il sera true si et seulement si tu as : - ) à la suite les uns des autres.
    et le problème c'est que le test a l'air foireux (la suite de caractère et présente et le programme ne le détecte pas, ou l'inverse)
    c'est ce que je ne comprend pas.
    et même quand il détecte bien la suite elle est rarement à la place indiqué par le str.indexOf():
    exemple de résultat que j'ai obtenu:

    (::-))-)-: (suite)
    5 (str.indexOf())
    Gagné !

    le programme indique la suite au rang 5 alors qu'elle est au rang 2

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Dans ta méthode joue(), tu génères DEUX chaines aléatoires.
    Tu en affiches une, et tu testes l'autre.

    Du coup forcément les résultats sont incohérent.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public static void joue() {
    		final String text = genere();
    		System.out.println(text );
    		if (gagne(text ))
    			System.out.println("Gagné !");
    		else
    			System.out.println("Perdu !");
    	}

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,

    Dans ta méthode joue(), tu génères DEUX chaines aléatoires.
    Tu en affiches une, et tu testes l'autre.

    Du coup forcément les résultats sont incohérent.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public static void joue() {
    		final String text = genere();
    		System.out.println(text );
    		if (gagne(text ))
    			System.out.println("Gagné !");
    		else
    			System.out.println("Perdu !");
    	}
    A vouloir économiser de la mémoire en ne déclarant pas de variables, on fait des erreurs
    En tout cas, j'ai changer dans le code et ça marche
    Merci

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

Discussions similaires

  1. [Runtime] Problème avec la méthode 'exec'
    Par regisba dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 25/08/2006, 13h36
  2. Problème avec la méthode request.form()
    Par sam.fet dans le forum ASP
    Réponses: 2
    Dernier message: 11/08/2006, 17h11
  3. [POO] Problème avec setInterval/méthodes d'écriture
    Par Lpu8er dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/07/2006, 15h37
  4. problème avec la méthode getElementById() dans Firefox
    Par matrouba dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 08h55
  5. Problème avec la méthode pack()
    Par tomca dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 10h58

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