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 :

petit blocage sur exercice avec listNode (IsListPalindrome)


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur généraliste

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut petit blocage sur exercice avec listNode (IsListPalindrome)
    Bien le bonjour à la communauté de Developpez.com.

    Eh bien voila, je viens vers vous suite à une difficulté que je rencontre en ayant travaillé sur un exercice:

    l'objectif est de véfifier qu'un listNode en input est un palindrome ou non. Je dois donc retourner true si la lecture est identique dans les deux sens sinon je renvoi false.
    Jusque la je m'en sortais pas trop mal. Cependant il y a un cas ou cela ne fonctionne pas et je n'arrive pas a trouver la solution à ce petit désagrément. Quelqu'un aurait-il la possibilité d'éclairer ma lanterne ?

    voici mon code:
    Nom : 01273f6e-e7cc-4f34-8d8b-a05528ca5ab8.png
Affichages : 293
Taille : 24,1 Ko


    voici le cas qui ne fonctionne pas:
    Nom : Screenshot-2017-11-7 Interview Practice CodeFights.png
Affichages : 231
Taille : 5,3 Ko

    Voila, merci d'avance .

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    pour qu'on puisse tester ton programme, il faut vraiment que tu fasses un copier/coller du code. Tu ne peux pas nous montrer une capture d'écran, ça ne marche pas.

    Mais étant donné ce qui t'arrive, je me sens obligé quand même de te décoincer.

    Essaies de comprendre ce code, et regarde ce que ça donne quand tu l'exécutes :

    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
    Double a = 1.0;
    Double b = 1.0;
     
    System.out.println("a: " + a);
    System.out.println("b: " + b);
     
    System.out.println("a == b ?");
    System.out.println(a == b);
     
    System.out.println("a.equals(b) ?");
    System.out.println(a.equals(b));
     
    double a2 = a;
    double b2 = b;
     
    System.out.println("a2: " + a2);
    System.out.println("b2: " + b2);
     
    System.out.println("a2 == b2 ?");
    System.out.println(a2 == b2);
    Qu'est-ce que ça veut dire ? Eh bien ça veut dire que les objets de type Double, avec majuscule, ça ne marche pas comme le type primitif double, sans majuscule.

    Pour comparer des objets en Java, il ne faut pas utiliser l'opérateur ==, il faut utiliser la méthode equals().
    Dans ton cas, !Node1.value.equals(Node2.value)

    A noter que je sais que ça déjà, ça ne marche pas. Mais je n'ai pas vérifié s'il y a d'autres erreurs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur généraliste

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut
    Re-salut,

    D'abord, voici un copier/coller de 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
    31
    boolean isListPalindrome(ListNode<Double> l) {
        
        if (l == null )
            return true;
        
        if (l.next == null)
            return true;
        
        ListNode <Double> Node = l;
        ListNode <Double> myNode = null;//new ListNode(l.value);
            
        while (Node != null){
            ListNode <Double> tempNode = new ListNode (Node.value);
            tempNode.next = myNode;
            myNode = tempNode;
            Node = Node.next;
        }
        
        ListNode <Double> Node1 = l;
        ListNode <Double> Node2 = myNode;
        
        
        while (!Node1.equals(Node2){  Cette synthaxe ne fonctionne effectivement pas, dans le message d'erreur j'ai un: java.lang.Integer cannot be cast to java.lang.Double >> Dans ce cas il faudrait que je réalise une conversion de int vers double ? mais je dois avouer que je ne suis pas a l'aise avec la synthaxe
            if (Node1.value != Node2.value){
                return false;
            }
            Node1=Node1.next;
            Node2=Node2.next;
        }
        return true;
    }
    ensuite, merci du conseil pour le type de la variable. Cependant sur Codefight en ayant changer le type Double en double, j'ai un message d'erreur dans la console:

    file.java on line 10: error: unexpected type
    boolean isListPalindrome(ListNode<double> l) {
    ^
    required: reference
    found: double
    file.java on line 18: error: unexpected type
    ListNode <double> Node = l;
    ^
    required: reference
    found: double
    file.java on line 19: error: unexpected type
    ListNode <double> myNode = null;//new ListNode(l.value);
    ^
    required: reference
    found: double
    file.java on line 22: error: unexpected type
    ListNode <double> tempNode = new ListNode (Node.value);
    ^
    required: reference
    found: double
    file.java on line 28: error: unexpected type
    ListNode <double> Node1 = l;
    ^
    required: reference
    found: double
    file.java on line 29: error: unexpected type
    ListNode <double> Node2 = myNode;
    ^
    required: reference
    found: double
    Note: /usercode/file.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    6 errors

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    On ne peut pas utiliser de type primitif en paramètre, donc ListNode<double> tu oublies, ça ne peut être que ListNode<Double>. C'est juste la syntaxe dans la condition (le if (Node1.value != Node2.value){ en if (!Node1.value.equals(Node2.value)){ ou if ( !Objects.equals(Node1.value,Node2.value)){qu'il faut changer.


    Pour le while (!Node1.equals(Node2){ je ne vois pas pourquoi il y aurait une histoire de cast ici, en Integer ou autre chose. Est-ce que ce n'est pas simplement le compilateur qui essaye d'interpréter le fait qu'il manque une parenthèse fermante dans la condition ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur généraliste

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Par défaut
    Re bonjour,

    Merci pour les diverses interventions rapides.
    J'ai procédé au changement indiqué et re-modifié mes "Double" en Integer puisque dans la condition du if modifié comme cela a été suggéré générait une erreur (tentative de conversion d'int en double).
    Et effectivement, pour le "while" c'était une petite erreur de ma part, ça a été corrigé.

    Merci, sujet résolu.

    Cordialement,
    misterJay973.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par misterJay973 Voir le message
    J'ai procédé au changement indiqué et re-modifié mes "Double" en Integer puisque dans la condition du if modifié comme cela a été suggéré générait une erreur (tentative de conversion d'int en double).
    Ça n'est pas normal. Si tu as besoin de traiter du Double, tu ne devrais pas avoir à choisir du Integer à la place. Montres-nous le code de ListNode et la condition en question.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [WD17] un petit problème sur etat avec saisie
    Par hadaf dans le forum WinDev
    Réponses: 4
    Dernier message: 16/07/2013, 10h24
  2. Petit bug sur IE avec style.color
    Par zerros dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/11/2012, 10h06
  3. Petite question sur exercice Java
    Par romain1 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 01/09/2008, 11h37
  4. petit problème d'export avec entête sur 4D
    Par astrolane dans le forum 4D
    Réponses: 1
    Dernier message: 07/08/2007, 14h44
  5. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46

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