Thanos_ Δημοσ. 4 Ιανουαρίου 2010 Δημοσ. 4 Ιανουαρίου 2010 > public class Test{ public static void main(String[] args){ //Σταθμος συνταγμα, με 5 εκδοτηρια MetroSation station1= new MetroStation("Συνταγμα", 5); //Φοιτητης, 22 χρονων Passenger p1= new Student(22); //Κανονικος επιβατης Passenger p2= new RegularPassenger(); //αγορα εισιτιριου p1.buyTicket(station1, 3); //επιβιβαση του p1 στον σταθμο station1 station1.board(p1); //εμφανισει ανα ειδος επιβατη(φοιτητης ή κανονικος) station1.printTotalPassengers(); //εμφανιση ανα εκδοτηριο station1.printTotalIncome(); } Θα πρεπει να δημιουργηθουν 2 κλασεις τουλ μια για τους σταθμους και μια για τους επιβατες Το ερωτημα μου ειναι πως θα γινει αυτο p1.buyTicket(station1, 3); συσχετισμος δλδ της συναρτησης buyTicket στην κλαση Passenger με την κλαση MetroStation (station1)?? Οπως επισης και station1.board(p1); ??? Ελπιζω να το καταλαβατε!!!!!! Αν γνωριζετε το οτιδηποτε, tutorials κτλ παρακαλω βοηθηστε με!!!! Ευχαριστω πολυ
ippo00 Δημοσ. 4 Ιανουαρίου 2010 Δημοσ. 4 Ιανουαρίου 2010 Πήγαινε διάβασε τι είναι η κλάση και πως δουλέυει..
virxen75 Δημοσ. 4 Ιανουαρίου 2010 Δημοσ. 4 Ιανουαρίου 2010 αν κατάλαβα καλά θες να κάνεις κάτι τέτοιο > import java.util.ArrayList; public class Test{ class MetroStation{ private String name; private int ekdotiria; private ArrayList<Passenger> passengers; public MetroStation(String name,int ekdotiria){ this.name=name; this.ekdotiria=ekdotiria; passengers=new ArrayList<Passenger>(); } public void board(Passenger p1){ passengers.add(p1); } public void printTotalPassengers(){ //......... } public void printTotalIncome(){ //........ } } abstract class Passenger{ private MetroStation station; private int ekdotirio; public void buyTicket(MetroStation station,int ekdotirio){ this.station=station; this.ekdotirio=ekdotirio; } } class Student extends Passenger{ private int age; public Student(int age){ this.age=age; } } class RegularPassenger extends Passenger{ public RegularPassenger(){ } } public Test(){ //Σταθμος συνταγμα, με 5 εκδοτηρια MetroStation station1= new MetroStation("Συνταγμα", 5); //Φοιτητης, 22 χρονων Passenger p1= new Student(22); //Κανονικος επιβατης Passenger p2= new RegularPassenger(); //αγορα εισιτιριου p1.buyTicket(station1, 3); //επιβιβαση του p1 στον σταθμο station1 station1.board(p1); //εμφανισει ανα ειδος επιβατη(φοιτητης ή κανονικος) station1.printTotalPassengers(); //εμφανιση ανα εκδοτηριο station1.printTotalIncome(); } public static void main(String[] args){ new Test(); } }
Thanos_ Δημοσ. 4 Ιανουαρίου 2010 Μέλος Δημοσ. 4 Ιανουαρίου 2010 public void buyTicket(MetroStation station,int ekdotirio){ ναι ουσιαστικααυτο ειναι το προβλημα μου >public class Paasenger { public enum Status {foititis,politis,fantaros}; private int ilikia; public Status eidos; public Paasenger(int age){ ilikia=age; eidos=Status.foititis; } public Paasenger(){ eidos=Status.politis; } public Paasenger(String soldier){ eidos=Status.fantaros; } public void buyTicket(String stathmos,int aristathmou){ if(eidos==Status.foititis) stathmos.pin[aristathmou][3]+=0.5; else if(eidos==Status.politis) stathmos.pin[aristathmou][3]+=1.0; else stathmos.pin[aristathmou][3]+=0.0; } } δεν ξερω αν stathmos.pin[aristathmou][3]+=0.0; ειναι σωστο!!! Ο pin[][] ειναι πινακας που σε καθε γραμμη θα ειναι και το εκδοτηριο, η 1η στηλη ο αριθμος των φοιτητων, η 2η ο αριθμος των απλων επιβατων, 3η ο αριθμος των φανταρων και η 4η τα εσοδα απο τα εισητιρια. μας την εχουν βαλει για ασκηση στη σχολη κι εχω χαθει λιγο!!!!
virxen75 Δημοσ. 4 Ιανουαρίου 2010 Δημοσ. 4 Ιανουαρίου 2010 δεν ξερω αν stathmos.pin[aristathmou][3]+=0.0; ειναι σωστο!!! αφού ορίζεις String stathmos πως να είναι σωστό? ο σωστός τρόπος είναι αυτός που σου πρότεινα αν σε ενοχλούν τα πολλά class βάλε τα σε ξεχωριστά αρχεία .java βέβαια δεν ξέρω τι έχετε κάνει στην σχολή π.χ. ArrayList κάνατε? abstract class?
Thanos_ Δημοσ. 5 Ιανουαρίου 2010 Μέλος Δημοσ. 5 Ιανουαρίου 2010 ναι κατι λιγα εχουμε κανει!!!!! καταληψεις βλεπεις!!!!! Φιλε επειδη βλεπω οτι εισαι γνωστης του αντικειμενου μηπως θα μπορουσες να μου προτεινεις καποιο βιβλιο ή tutorial. Και κατι ακομα συγγνωμη κιολας αλλα δεν εχω απο που να καταπιαστω!!!!! Μου εμφανιζει μνμ λαθους "The method buyTicket(String, int) in the type Paasenger is not applicable for the arguments (MetroStation, int)" στην εντολη "p1.buyTicket ( station1 ,3);" στην κλαση test. Ομως στην κλαση Passenger ειναι >public void buyTicket(MetroStation station, int ekdotirio) { this.station=station; this.ekdotirio=ekdotirio; } σωστο νμζ!!!!!! ---------- Το μήνυμα προστέθηκε στις 17:29 ---------- ναι κατι λιγα εχουμε κανει!!!!! καταληψεις βλεπεις!!!!! Φιλε επειδη βλεπω οτι εισαι γνωστης του αντικειμενου μηπως θα μπορουσες να μου προτεινεις καποιο βιβλιο ή tutorial. Και κατι ακομα συγγνωμη κιολας αλλα δεν εχω απο που να καταπιαστω!!!!! Μου εμφανιζει μνμ λαθους "The method buyTicket(String, int) in the type Paasenger is not applicable for the arguments (MetroStation, int)" στην εντολη "p1.buyTicket ( station1 ,3);" στην κλαση test. Ομως στην κλαση Passenger ειναι >public void buyTicket(MetroStation station, int ekdotirio) { this.station=station; this.ekdotirio=ekdotirio; } σωστο νμζ!!!!!! Επισης αυτο >public void board(Paasenger p1){ passengers.add(p1); } ειναι σωστο??? Το Paasenger p1????? Εχω σκαλωσει!!!!
virxen75 Δημοσ. 6 Ιανουαρίου 2010 Δημοσ. 6 Ιανουαρίου 2010 καλό είναι όταν σου βγάζει λάθος να στέλνεις όλη την κλάση το λάθος δεν είναι πάντα εκεί που νομίζεις. σου έφτιαξα και ένα παράδειγμα με δεδομένα για να καταλάβεις τι γίνεται καλύτερα. > import java.util.ArrayList; public class Test{ class MetroStation{ private String name; private int ekdotiria; private ArrayList<Passenger> passengers; public MetroStation(String name,int ekdotiria){ this.name=name; this.ekdotiria=ekdotiria; passengers=new ArrayList<Passenger>(); } public void board(Passenger p1){ passengers.add(p1); } public void printTotalPassengers(){ int posoi=0; for (int i=0;i<passengers.size();i++){ Passenger p1=passengers.get(i); posoi++; System.out.println("passenger type="+p1.type+" paid "+p1.price+" euro sto ekdotitio "+p1.getEkdotirio()+" tou station "+p1.getStationName()); } System.out.println("===================================================="); System.out.println("sinolika "+posoi+" epibates"); } public void printTotalIncome(){ float amount=0; for (int i=0;i<passengers.size();i++){ Passenger p1=passengers.get(i); amount+=p1.price; } System.out.println("sinolika kerdi="+amount); } } abstract class Passenger{ private MetroStation station; public float price; public String type; private int ekdotirio; public void buyTicket(MetroStation station,int ekdotirio){ this.station=station; this.ekdotirio=ekdotirio; } public String getStationName(){ return this.station.name; } public int getEkdotirio(){ return this.ekdotirio; } } class Student extends Passenger{ private int age; public Student(int age){ this.age=age; this.price=0.5f; this.type="Student"; } } class RegularPassenger extends Passenger{ public RegularPassenger(){ this.price=1; this.type="Regular Passenger"; } } class Soldier extends Passenger{ public Soldier(){ this.price=0; this.type="Soldier"; } } public Test(){ //Σταθμος συνταγμα, με 5 εκδοτηρια MetroStation station1= new MetroStation("Συνταγμα", 5); MetroStation station2= new MetroStation("Ηράκλειο", 2); //Φοιτητης, 22 χρονων Passenger p1= new Student(22); //Κανονικος επιβατης Passenger p2= new RegularPassenger(); //φαντάρος Passenger p3= new Soldier(); //αγορα εισιτιριου p1.buyTicket(station1, 3); //επιβιβαση του p1 στον σταθμο station1 station1.board(p1); //p2 p2.buyTicket(station2,4); station2.board(p2); //p3 p3.buyTicket(station2,1); station2.board(p3); //station 1 station1.printTotalPassengers(); station1.printTotalIncome(); //station 2 station2.printTotalPassengers(); station2.printTotalIncome(); } public static void main(String[] args){ new Test(); } }
Thanos_ Δημοσ. 6 Ιανουαρίου 2010 Μέλος Δημοσ. 6 Ιανουαρίου 2010 φιλε ειλικρινα σε χιλιοευχαριστω!!!!!! Ειμαι ευγνωμων!!!! Μια μικρη παρατηρηση >public void board(Passenger p1){ passengers.add(p1); } χρησιμοποιεισ p1 για τους αλλους τι γινεται p2, p3!!!!!!! Χιλια συγγνωμη αν σε κουραζω!!!! Μπορεις να μου πεις απο ποιο βιβλιο διαβαζεις????
virxen75 Δημοσ. 6 Ιανουαρίου 2010 Δημοσ. 6 Ιανουαρίου 2010 το p1 είναι τοπική μεταβλητη θα μπορούσε να είναι π.χ. pass δηλαδή public void board(Passenger pass){ passengers.add(pass); } απλά δηλώνει τι τύπου παραμέτρους περιμένει η μέθοδος (board) να της δώσω με τους άλλους που αναφέρεις ======================================= η μέθοδος board ανήκει στην class MetroStation άρα την χρησιμοποιούν τα αντικείμενα της. π.χ. station1.board(p1); station1.board(p2); Y.Γ. οι μέθοδοι που γράφω //station 1 printTotalPassengers(); printTotalIncome(); είναι ενδεικτικές και όχι απαραίτητα αυτό που σου ζητάει η άσκηση σαφώς θα χρειαστούν μικροαλλαγές για τον σκοπό αυτό.
Thanos_ Δημοσ. 6 Ιανουαρίου 2010 Μέλος Δημοσ. 6 Ιανουαρίου 2010 γρψε το ετσι ρε φιλε!!!!! και με σκαλωνεις!!! χαχαχαχα να σαι καλα!!!!!
Thanos_ Δημοσ. 6 Ιανουαρίου 2010 Μέλος Δημοσ. 6 Ιανουαρίου 2010 γρψε το ετσι ρε φιλε!!!!! και με σκαλωνεις!!! χαχαχαχα να σαι καλα!!!!! πες μου σε παρακαλω κανενα βιβλιο!!!!!!!!!!
Thanos_ Δημοσ. 6 Ιανουαρίου 2010 Μέλος Δημοσ. 6 Ιανουαρίου 2010 οτι να ναι Μια τελευταια ερωτηση >public void buyTicket(MetroStation station,int ekdotirio){ this.station=station; this.ekdotirio=ekdotirio; } Σκεφτομαι να δημιουργησω στην κλαση MetroStation δυο ακομα ArrayList >public static ArrayList<Passenger> agorEisit; public static ArrayList<Passenger> agorKart; >public void printTotalIncome(){ float amount=0; for (int i=0;i<agorEisit.size();i++){ Passenger p1=agorEisit.get(i); amount+=p1.price; } for (int i=0;i<agorKart.size();i++){ Passenger p1=agorKart.get(i); amount+=p1.price*60*0.8; } System.out.println("sinolika kerdi="+amount); } Αν καταλαβες θελω οταν καποιος αγοραζει εισητιριο να γινεται η αθροιση χωρις να χρειαζεται να κανει board o επιβατης. Ουσιαστικα δεν ξερω πως θα το κανω απο την κλαση Passenger >public void buyTicket(MetroStation station,int ekdotirio){ this.station=station; this.ekdotirio=ekdotirio; public void buyCard(MetroStation station,int ekdotirio){ this.station=station; this.ekdotirio=ekdotirio; } } Αυτα!!!!! Αθλιος ειμαι αλλα τεσπα!!!!! ---------- Το μήνυμα προστέθηκε στις 21:08 ---------- δεν εχω προβλημα οτι ναναι Μια τελευταια ερωτηση >public void buyTicket(MetroStation station,int ekdotirio){ this.station=station; this.ekdotirio=ekdotirio; } Σκεφτομαι να δημιουργησω στην κλαση MetroStation δυο ακομα ArrayList >public static ArrayList<Passenger> agorEisit; public static ArrayList<Passenger> agorKart; >public void printTotalIncome(){ float amount=0; for (int i=0;i<agorEisit.size();i++){ Passenger p1=agorEisit.get(i); amount+=p1.price; } for (int i=0;i<agorKart.size();i++){ Passenger p1=agorKart.get(i); amount+=p1.price*60*0.8; } System.out.println("sinolika kerdi="+amount); } Αν καταλαβες θελω οταν καποιος αγοραζει εισητιριο να γινεται η αθροιση χωρις να χρειαζεται να κανει board o επιβατης. Ουσιαστικα δεν ξερω πως θα το κανω απο την κλαση Passenger >public void buyTicket(MetroStation station,int ekdotirio){ this.station=station; this.ekdotirio=ekdotirio; public void buyCard(MetroStation station,int ekdotirio){ this.station=station; this.ekdotirio=ekdotirio; } } Αυτα!!!!! Αθλιος ειμαι αλλα τεσπα!!!!!
virxen75 Δημοσ. 6 Ιανουαρίου 2010 Δημοσ. 6 Ιανουαρίου 2010 μία λύση για τον υπολογισμό μόνο από την αγορά και όχι από την επιβίβαση δίνει το παρακάτω. Y.Γ. για σημειώσεις στα ελληνικά εδώ javakias.blogspot.com/2007/07/java-tutorials.html test.zip
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.