Title: Java - Vectors Post by: ^^DaRk_HunTeR on March 01, 2013, 19:11:06 pm Παίζει να ναι κάτι πολύ απλό αλλά τώρα έχω κολλήσει…
Code: LineClass LineObject; Λοιπόν έχω διάφορους πίνακες τους οποίους θέλω για διάφορους λόγους να μετατρέψω σε Vectors. Γράφω λοιπόν τον κώδικα(που μου φαίνεται σωστός) για να κάνω τη μετατροπή αλλά μετά όμως θέλω να διαπιστώσω αν τα δεδομένα(εν προκειμένω integers, συντεταγμένες κάποιων γραμμών) του πρώτου πίνακα(New_arrayline[]) έχουν περάσει σωστά ως elements του πρώτου vector(LineVector). Για αυτό θέλω να εμφανίζω αυτά τα elements… και προς το παρόν το μόνο που παίρνω είναι: Quote Initial size: 0 Initial capacity: 25 Capacity after all additions: 25 0 (ClassesGeneral.LineClass): ClassesGeneral.LineClass@6659fb21 1 (ClassesGeneral.LineClass): ClassesGeneral.LineClass@1d766806 2 (ClassesGeneral.LineClass): ClassesGeneral.LineClass@48a77106 3 (ClassesGeneral.LineClass): ClassesGeneral.LineClass@68ed662d ... Που γίνεται το Fail? Κάπου διάβασα ότι πρέπει να κάνω τη δική μου toString() για να εκτυπωθούν σωστά τα elements αλλά δεν κατάλαβα ακριβώς γιατί και πως... Για πείτε γνώμες... P.S.: Απαντήσεις του στυλ βάλε arraylists είναι πιο γαμάτες θα αγνοούνται:P Title: Re: Java - Vectors Post by: DoomGuard on March 01, 2013, 19:20:29 pm Αν δεν υλοποιήσεις την δικιά σου toString() για να μετατρέψεις σε εκτυπώσιμη μορφή το αντικείμενο, χρησιμοποιείται η Object.toStrint() που εκτυπώνει όνομα κλάσης και θέση μνήμης νομίζω.
Για να δουλέψει το παραπάνω πρέπει να αλλάξεις το Code: Object element = LineVector.elementAt(i); Code: LineClass element = LineVector.elementAt(i); Title: Re: Java - Vectors Post by: ^^DaRk_HunTeR on March 01, 2013, 19:25:23 pm Αν δεν υλοποιήσεις την δικιά σου toString() για να μετατρέψεις σε εκτυπώσιμη μορφή το αντικείμενο, χρησιμοποιείται η Object.toStrint() που εκτυπώνει όνομα κλάσης και θέση μνήμης νομίζω. και στην Object.toString τι θα δωσω?Quote Για να δουλεψει το παραπάνω πρέπει να αλλάξεις το Code: Object element = LineVector.elementAt(i); Code: LineClass element = LineVector.elementAt(i); Αυτό που θέλω είναι να γίνονται print οι integers μέσα στα elements... Title: Re: Java - Vectors Post by: antares on March 01, 2013, 19:26:40 pm Ναι στην κλάσση LineClass πρέπει να κάνεις override την μέθοδο toString(). Π.χ.
public class LineClass { @Override public String toString() { return "Edw ektypwneis to object sou me vash ta members"; } } Title: Re: Java - Vectors Post by: ^^DaRk_HunTeR on March 01, 2013, 19:44:08 pm Αυτό είναι το σώμα της κλάσης...
Code: public class LineClass { Με τις τελευταίες γραμμές κώδiκα στο printing έφυγε το "@... " αλλά πάλι δε βλέπω integers... ----- Εδιτ ----- 'Ακυρο νομίζω το βρήκα, δε χρειαζόταν τπτ απο όλα αυτα... Title: Re: Java - Vectors Post by: DoomGuard on March 01, 2013, 20:09:46 pm Code: public String toString() { Title: Re: Java - Vectors Post by: ^^DaRk_HunTeR on March 02, 2013, 05:24:33 am @Doomguard
Αυτό που έγραψες ήταν λάθος γιατί το typecasting δε χρειάζεται(είναι ούτως ή άλλως integer), ούτε το .toString(), σε αυτό το σημείο, χρειάζεται και δε δουλεύει εν προκειμένω... (πετάει error) Βρήκα δύο λύσεις δεν ξέρω αν κάποια είναι πιο σωστή απο την άλλη... Η πρώτη είναι η υλοποίηση της toString() στην LineClass Code: public String toString() { Και μετά η εμφάνιση αυτής στη main: Code: for(int i=0;i<LineVector.size();i++) Η δεύτερη είναι η τροποίηση του printing που έριξα παραπάνω ως εξής(χωρίς δλδ toString()): Code: // For each element in the vector, print out the index, the Εμένα μου φαίνονται και τα δύο σωστά... Το σίγουρο είναι ότι βγάζουν τα ίδια(αναμενόμενα) αποτελέσματα... Title: Re: Java - Vectors Post by: Issle on March 04, 2013, 00:13:44 am Η δεύτερη λύση είναι καλύτερη. Συναρτήσεις βασικών αντικειμένων στην java όπως αυτές του Object/Thread κτλ καλό είναι να μην γίνονται Override γιατί έχουν προκαθορισμένη σημασία. Αν ένας προγραμματιστής πάρει τον κώδικά σου και χρησιμοποιήσει την toString() για key πχ σε ένα Map<> και υποθέσει οτι επιστρέφει το @-Representation του αντικειμένου χωρίς να ξέρει οτι εσύ έκανες Override μπορεί να υποπέσει σε τρελά bugs μετά. Οπότε ότι κάνεις print καλύτερα να γίνεται σε διαφορετική method.
|