insomania Δημοσ. 23 Δεκεμβρίου 2011 Δημοσ. 23 Δεκεμβρίου 2011 Γεια σας, Τώρα αρχίζω να μαθαίνω για συνδεδεμένες λίστες και κάνω διάφορους πειραματισμούς.Παρακάτω υποτίθεται οτι δημιουργώ μια λίστα με 4 κόμβους οι οποίοι περιέχουν από 1 όνομα. η κλάση κόμβος >public class Node { public Object data; public Node next; public Node (Object d) { data=d; next=null; } public Node getNode() { return next; } public void setNode(Node x) { next=x; } public Object getObject() { return data; } public void setObject(Object x) { data=x; } } και η κλάση που δημιουργώ τους 4 κόμβους >public class LinkedList { Node head=new Node("Mitsos"); head.next=new Node("Takis"); head.next.next=new Node("Lakis"); head.next.next.next=new Node("Alekos"); } την πρώτη την έκανα compile μια χαρά,αλλά στην δεύτερη (την LinkedList)μου βγάζει το εξής σφάλμα: <identifier> expected head.next=new Node("Takis"); <identifier> expected head.next.next=new Node("Lakis"); <identifier> expected head.next.next.next=new Node("Alekos"); 3 errors δεν μπορώ να το διορθώσω (και παίζει να είναι τπτα απλό),οπότε κάθε βοήθεια ευπρόσδεκτη.
nexuss Δημοσ. 23 Δεκεμβρίου 2011 Δημοσ. 23 Δεκεμβρίου 2011 Το πιο πιθανό που συμβαίνει αυτό είναι διότι δεν τα έχεις βάλει σε κάποιο initialization block. Δοκίμασε να τα βάλεις μέσα σε constructor πχ > public class LinkedList { public LinkedList() { Node head=new Node("Mitsos"); head.next=new Node("Takis"); head.next.next=new Node("Lakis"); head.next.next.next=new Node("Alekos"); } }
insomania Δημοσ. 23 Δεκεμβρίου 2011 Μέλος Δημοσ. 23 Δεκεμβρίου 2011 Το πιο πιθανό που συμβαίνει αυτό είναι διότι δεν τα έχεις βάλει σε κάποιο initialization block. Δοκίμασε να τα βάλεις μέσα σε constructor πχ > public class LinkedList { public LinkedList() { Node head=new Node("Mitsos"); head.next=new Node("Takis"); head.next.next=new Node("Lakis"); head.next.next.next=new Node("Alekos"); } } Ωραίος ευχαριστώ!Τώρα κάνει μια χαρά compile. Γιατί όμως να απαιτεί constructor;Kάποιος κανόνας θα υπάρχει στην java που μου διαφεύγει... (μήπως δεν μπορούμε να διαχείριστουμε έτσι μεταβλήτλές στιγμιοτύπου οι οποίες είναι αντικείμενα?)
Timonkaipumpa Δημοσ. 23 Δεκεμβρίου 2011 Δημοσ. 23 Δεκεμβρίου 2011 Γιατί πας να δηλώσεις τιμές σε πεδία μίας κλάσης και όχι ενός αντικειμένου. Άλλο η κλάση άλλο το αντικείμενο. Δοκίμασε να δεις και με static πεδία ότι θα δουλέψει όπως το έχεις, χωρίς constructor. Υ.Γ. Επίσης, είναι λάθος να έχεις public τα πεδία του Node. Ο χρήστης θα πρέπει να προσπελαύνει τα πεδία αυτά αποκλειστικά και μόνο με τις μεθόδους της κλάσης Node και όχι χύμα. Άρα κάνε private τα πεδία data και next.
insomania Δημοσ. 23 Δεκεμβρίου 2011 Μέλος Δημοσ. 23 Δεκεμβρίου 2011 Ok ευχαριστώ παιδιά το κατάλαβα.Το next είναι (μη δημιουργημένο) αντικείμενο της Node γι αυτό υπάρχει και λάθος (ενώ με constructor είναι σωστό).Οπότε ούτε με static πεδία δουλεύει (το δοκίμασα). Το ξέρω οτι είναι κακή πρακτική να κάνω τα πεδία public αλλά ήθελα να δοκιμάσω τον κώδικα που βρήκα από ένα βιντεάκι στο youtube στο 4:45
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα