Προς το περιεχόμενο

Προβλημα σε ασκηση στην JAVA!!!!


Thanos_

Προτεινόμενες αναρτήσεις

Δημοσ.

>
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 κτλ παρακαλω βοηθηστε με!!!!

Ευχαριστω πολυ

Δημοσ.

αν κατάλαβα καλά θες να κάνεις κάτι τέτοιο

 

>
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();
}

}

Δημοσ.

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η τα εσοδα απο τα εισητιρια.

 

μας την εχουν βαλει για ασκηση στη σχολη κι εχω χαθει λιγο!!!!

Δημοσ.

δεν ξερω αν stathmos.pin[aristathmou][3]+=0.0; ειναι σωστο!!!

 

αφού ορίζεις String stathmos πως να είναι σωστό?

 

 

ο σωστός τρόπος είναι αυτός που σου πρότεινα

αν σε ενοχλούν τα πολλά class

βάλε τα σε ξεχωριστά αρχεία .java

 

 

βέβαια δεν ξέρω τι έχετε κάνει στην σχολή

 

π.χ. ArrayList κάνατε?

abstract class?

Δημοσ.

ναι κατι λιγα εχουμε κανει!!!!! καταληψεις βλεπεις!!!!!

 

Φιλε επειδη βλεπω οτι εισαι γνωστης του αντικειμενου μηπως θα μπορουσες να μου προτεινεις καποιο βιβλιο ή 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?????

 

Εχω σκαλωσει!!!!

Δημοσ.

καλό είναι όταν σου βγάζει λάθος να στέλνεις όλη την κλάση

το λάθος δεν είναι πάντα εκεί που νομίζεις.

 

σου έφτιαξα και ένα παράδειγμα με δεδομένα για να καταλάβεις

τι γίνεται καλύτερα.

 

>
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();
}

}

Δημοσ.

φιλε ειλικρινα σε χιλιοευχαριστω!!!!!!

Ειμαι ευγνωμων!!!!

 

Μια μικρη παρατηρηση

>public void board(Passenger p1){
	passengers.add(p1);
}

 

χρησιμοποιεισ p1 για τους αλλους τι γινεται p2, p3!!!!!!!

Χιλια συγγνωμη αν σε κουραζω!!!!

Μπορεις να μου πεις απο ποιο βιβλιο διαβαζεις????

Δημοσ.

το 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();

 

είναι ενδεικτικές και όχι απαραίτητα αυτό που σου ζητάει η άσκηση

σαφώς θα χρειαστούν μικροαλλαγές για τον σκοπό αυτό.

Δημοσ.

γρψε το ετσι ρε φιλε!!!!! και με σκαλωνεις!!!

χαχαχαχα

να σαι καλα!!!!!

 

πες μου σε παρακαλω κανενα βιβλιο!!!!!!!!!!

Δημοσ.

οτι να ναι

 

Μια τελευταια ερωτηση

>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;
   }
   }

 

Αυτα!!!!!

Αθλιος ειμαι αλλα τεσπα!!!!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...