manic Δημοσ. 8 Απριλίου 2011 Δημοσ. 8 Απριλίου 2011 εχω το εξης προβλημα εχω φτιαξει μια λιστα > Myname name = new Myname(); MyLastname lname = new MyLastname(); ArrayList list = new ArrayList(); list.add(name) list.add(lname) προσπαθω να φτιαξω μια for-each loop για να προσπερασω τα στοιχεια τις και να τα χρησιμοποιησω ως εξης: >for (xxxxxxxxx i : list) {System.out.println("show " + i.getLastname() ); System.out.println("show " + i.getName() ); } αλλα δεν 3ερω τι να βαλω στην θεση των x...xx υπαρχει καποιος αλλος τροπος να κανω αυτο που θελω ?
MeTaXaS4 Δημοσ. 8 Απριλίου 2011 Δημοσ. 8 Απριλίου 2011 τι ακριβώς θέλεις να κάνεις ; γιατί με το παραπάνω δεν καταλαβαίνω και πολύ τι εννοείς..
computeras13 Δημοσ. 8 Απριλίου 2011 Δημοσ. 8 Απριλίου 2011 Μάλλον δεν έχεις καταλάβει την έννοια της λίστα σωστά. Για να αποθηκεύσεις αυτά τα δύο που θέλεις και να τα πάρεις πίσω θέλεις κάτι σαν το παρακάτω: > Myname name = new Myname(); MyLastname lname = new MyLastname(); ArrayList list = new ArrayList(); list.add(name) list.add(lname) System.out.println("show " + ((MyLastname)list.get(1)).getLastname()); System.out.println("show " + ((Myname)list.get(0)).getName()); Στην λίστα σου μέσα περνάς object, οπότε θα πρέπει να τα κάνεις casting για να παίξουν σωστά οι συναρτήσεις τους. Τώρα για να περάσεις όλα τα στοιχεία μιας λίστας και να τα τυπώσεις θέλεις το παρακάτω > for (int i=0;i<list.size();i++){ object listElement = list.get(i); }
manic Δημοσ. 8 Απριλίου 2011 Μέλος Δημοσ. 8 Απριλίου 2011 καταρχας ευχαριστω πολυ αυτο που ηθελα να κανω ειναι να δημιουργο καποια αντικειμενα απο διαφορες υποκλασεις που εχω ( Myname() / MyLastname()) και αυτα τα αντικειμενα να τα αποθηκευω σε μια λιστα. μεχρι εκει το εχω καταφερει αυτο που δν μπορω να κανω ειναι να φτιαξω μια λουπα με το for ωστε να μπορω να προσπερναω αυτα τα αντικειμενα πχ μεσα στην υποκλαση lastname εχω μια μεθοδο για να βρισκει το μηκος του ονοματος η ιδια ακριβος μεθοδος υπαρχει και στην υποκλαση name, θελω μια for λοιπον που να μπορω να χρησιμοποιω τις μεθοδους για το μηκος του επονυμου και του ονοματος (οι μεθοδοι αυτοι εχουν το ιδιο ονομα) για το καθε αντικοιμενο που εχω δημιουργισει
virxen75 Δημοσ. 8 Απριλίου 2011 Δημοσ. 8 Απριλίου 2011 εχω το εξης προβλημα εχω φτιαξει μια λιστα > Myname name = new Myname(); MyLastname lname = new MyLastname(); ArrayList list = new ArrayList(); list.add(name) list.add(lname) προσπαθω να φτιαξω μια for-each loop για να προσπερασω τα στοιχεια τις και να τα χρησιμοποιησω ως εξης: >for (xxxxxxxxx i : list) {System.out.println("show " + i.getLastname() ); System.out.println("show " + i.getName() ); } αλλα δεν 3ερω τι να βαλω στην θεση των x...xx υπαρχει καποιος αλλος τροπος να κανω αυτο που θελω ? το πιο κοντινό σε αυτό που θες είναι κοιτώντας το i.getLastname() και το i.getName() είναι: > import java.util.ArrayList; public class Names { private ArrayList<Person> list; class Person{ private String name; private String lastName; public Person(){ } public Person(String name,String lastName){ this.name=name; this.lastName=lastName; } public void setName(String name){ this.name=name; } public void setLastName(String lastName){ this.lastName=lastName; } public String getName(){ return this.name; } public String getLastName(){ return this.lastName; } } public Names() { list=new ArrayList<Person>(); list.add(new Person("name1","lastname1")); list.add(new Person("name2","lastname2")); list.add(new Person("name3","lastname3")); list.add(new Person("name4","lastname4")); for (Person i : list){ System.out.println("show " + i.getLastName() ); System.out.println("show " + i.getName() ); System.out.println(); } } public static void main(String args[]) { new Names(); } }
manic Δημοσ. 8 Απριλίου 2011 Μέλος Δημοσ. 8 Απριλίου 2011 το πιο κοντινό σε αυτό που θες είναι κοιτώντας το i.getLastname() και το i.getName() είναι: > import java.util.ArrayList; public class Names { private ArrayList<Person> list; class Person{ private String name; private String lastName; public Person(){ } public Person(String name,String lastName){ this.name=name; this.lastName=lastName; } public void setName(String name){ this.name=name; } public void setLastName(String lastName){ this.lastName=lastName; } public String getName(){ return this.name; } public String getLastName(){ return this.lastName; } } public Names() { list=new ArrayList<Person>(); list.add(new Person("name1","lastname1")); list.add(new Person("name2","lastname2")); list.add(new Person("name3","lastname3")); list.add(new Person("name4","lastname4")); for (Person i : list){ System.out.println("show " + i.getLastName() ); System.out.println("show " + i.getName() ); System.out.println(); } } public static void main(String args[]) { new Names(); } } το προβλημα μου ειναι οτι δεν μπορω να δημιουργησω 1 αντικειμενο person αλλα 2 και γι αυτο δν μπορω να χρησιμοπιησω την for (Person i : list
virxen75 Δημοσ. 8 Απριλίου 2011 Δημοσ. 8 Απριλίου 2011 αυτό σου κάνει? > import java.util.ArrayList; public class Names { private ArrayList<Person> list; abstract class Person{ } class MyName extends Person{ private String name; public MyName(String name){ this.name=name; } public String getName(){ return name; } } class MyLastName extends Person{ private String lastName; public MyLastName(String lastName){ this.lastName=lastName; } public String getLastName(){ return lastName; } } public Names() { list=new ArrayList<Person>(); list.add(new MyName("name1")); list.add(new MyLastName("surname1")); list.add(new MyName("name2")); list.add(new MyLastName("surname2")); for (Person i : list){ if (i instanceof MyLastName) System.out.println("show " + ((MyLastName)i).getLastName() ); else System.out.println("show " + ((MyName)i).getName() ); System.out.println(); } } public static void main(String args[]) { new Names(); } }
djcat Δημοσ. 9 Απριλίου 2011 Δημοσ. 9 Απριλίου 2011 Αν παίξεις λίγο με τις κληρονομικότητες το instance of και το type casting δε χρειάζονται. Δοκίμασε το λίγο, Αξίζει τον κόπο.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.