J'ai des problèmes avec un projet que j'ai pour ma classe OOP. Je suis presque fini, mais il manque toujours d'une méthode de totring et d'une méthode principale. Pas vraiment sûr comment y aller et apprécierait toute aide.
Je veux que mon retourne une représentation de chaîne de tous les éléments stockés dans la liste. Une représentation de chaîne d'une liste vide ressemble à et voici ce que j'ai jusqu'à présent dans ma classe integerlinkedlist p> Je pense que j'aime une boucle la voie à suivre ici, mais encore une fois, je ne suis pas sûr. p> p> tostring code> méthode fonctionne comme suit:
tête -> <- queue code>
Une représentation de chaîne d'une liste non vide ressemble à:
Tête -> 134 <-> - 8 <-> 42 <-> 1 <- queue code> p> P>
blockQuote>
3 Réponses :
Voici comment l'écrire:
@Override // <-- Annotate that you are overriding the toString() method public String toString(){ StringBuilder sb = new StringBuilder(); sb.append("Head-->"); IntegerNode curr = head; if (curr == null) { sb.append("<--tail"); return sb.toString(); } sb.append(curr.getData()); curr = curr.getNext(); while(curr != null) { sb.append("<-->"); sb.append(curr.getData()); curr = curr.getNext(); } sb.append("<--tail"); return sb.toString(); }
Merci! Y a-t-il un moyen de le faire en utilisant simplement une chaîne à la place?
@Pauldaniels Bien sûr, créez une chaîne à la place du StringBuilder et utilisez + = au lieu de l'annexe. Remarque Vous devrez convertir le curr.getData () en une chaîne.
Vous pouvez également créer une méthode de tostring pour la classe Integernode également. Ensuite, vous avez un peu de choses récursives.
Oui, vous devez utiliser une boucle, car vous souhaitez itérer sur des données de longueur inconnue. Michael Markidis a écrit la réponse plus rapidement que moi, utilise sa solution, mais je suggérerais quelques améliorations à votre code.
Si vous souhaitez attribuer des données dans le constructeur qui ont le même nom que le champ, utiliser doivent utiliser devrait ressembler à ceci p> ou si vous souhaitez affecter le nœud précédent et suivant p> string h = "tête ->" + la tête; code> ne fonctionnera pas , parce que la tête est un objet
INTEGERNODE code>, et vous souhaitez accéder à ses données telles que celles-ci
head.getdata () code> (pourquoi attribuez-vous
data = données; < / code> dans cette méthode? Il ne doit que renvoyer) P>
ce mot-clé code> à Effacer clairement que voulez-vous attribuer. Affectation également null
suivant code> et
prev code> n'a aucune signification, donc ce code p>
Merci beaucoup! Je vais certainement apporter des changements.
En outre, une erreur de copie / pâte dans setNext () code>. Il définit le champ
prev code>.
Si vous utilisez Java 8+, Stringjoininer code>
le rend facile.
public int pollFirst(){ int x = head.getData(); head = head.getNext(); if (head == null) tail = null; else head.setPrevious(null); return x; } public int pollLast(){ int x = tail.getData(); tail = tail.getPrevious(); if (tail == null) head = null; else tail.setNext(null); return x; }
Pourquoi faites-vous
data = data = data code> .. mais dans votre
tostring () code> Méthode Créez un
Integernode code> et boucle de la tête à la queue et à l'arrêt Quand c'est la queue ...
Ajout du .getData () code> à chaque fois "
Dans votre code,
SetNext () code> est le paramètre
prev = in code> et
setprev () code> est également réglant
prev = in code> . est ce bien?
@Matisteur merci monsieur. Bon endroit.
@ 3kings tu as absolument raison! Merci.