πρόβλημα σε compilation σε κλάση αντικειμένου

Συζητήσεις για την Java

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
vassilianna
Δημοσιεύσεις: 3
Εγγραφή: 24 Ιούλ 2010 15:59

πρόβλημα σε compilation σε κλάση αντικειμένου

Δημοσίευση από vassilianna » 24 Ιούλ 2010 16:39

Γεια σας και καλώς σας βρήκα (είμαι καινούρια στο φόρουμ). πως προανέφερα, ασχολούμαι με τη java εδώ και ενάμιση μήνα περίπου όμως ακόμη κολλάω στις κλάσεις και τα αντικείμενα. Θέλησα να δημιουργήσω ένα πρόγραμμα το οποίο θα φτιάχνει έναν (υποτιθέμενο) κατάλογο φαγητών-εδώ χρησιμοποίησα πίνακα- και θα τυπώνει το επιλεγμένο φαγητό και στη συνέχεια θα τυπώνει την τιμή του.Το έφτιαξα λοιπόν έτσι:

Κώδικας: Επιλογή όλων

public class lunch{
public static void main(String[] args){
     mainDish pasta= new mainDish(2);
}
}



public class mainDish{
     int meatprice=8;
     int fishprice=12;
     int pastaprice=4;
public mainDish(int a){
	 String[] foodname= new String[3];
	 foodname[0]= "meat";
	 foodname[1]= "fish";
         foodname[2]= "pasta";
	 System.out.println("Menu includes "+foodname[0]+" "+foodname[1]+" "+foodname[2]);
	System.out.println("\nYou have chosen "+foodname[a]);
   if (foodname[a]== "meat"){
	  System.out.println(meatprice);
   }else if (foodname[a]=="fish"){
	  System.out.println(fishprice);
   }else if (foodname[a]=="pasta"){
	  System.out.println(pastaprice);
   }
}
}
Όταν όμως προσπάθησα να βάλω τη δομή if σε μια μέθοδο, συνεχώς προέκυπτε κάποιο πρόβλημα με το compilation. Αρχικά ήθελα να δημιουργήσω μια τρίτη κλάση που θα διαβάζει το string και θα τυπώνει την αντίστοιχη τιμή. Ιδού ο κώδικας:

Κώδικας: Επιλογή όλων

public class prices extends mainDish{
public prices(int a){
int meatprice=8;
int fishprice=12;
int pastaprice=4;
if (foodname[a]== "meat"){
	System.out.println(""+meatprice);
}else if (foodname[a]=="fish"){
	System.out.println(fishprice);
}else if (foodname[a]=="pasta"){
	System.out.println(pastaprice);
	}
}
}
αλλά ο compiler μου βγάζει τα εξής:

javac "prices.java" (in directory: /home/vassilianna/java/geany/dish)
prices.java:2: cannot find symbol
symbol : constructor mainDish()
location: class mainDish
public prices(int a){
^
prices.java:6: cannot find symbol
symbol : variable foodname
location: class prices
if (foodname[a]== "meat"){
^
prices.java:8: cannot find symbol
symbol : variable foodname
location: class prices
}else if (foodname[a]=="fish"){
^
prices.java:10: cannot find symbol
symbol : variable foodname
location: class prices
}else if (foodname[a]=="pasta"){
^
4 errors
Compilation failed.

εφόσον η foodname προέρχεται από την mainDish, της οποίας η price είναι υποκλάση, γιατί δεν τη δέχεται ο compiler?


Θα ήμουν ιδιαίτερα ευγνώμων αν κάποιος μπορεί να με βοηθήσει. Και συγγνώμη που σας τα έπρηξα αλλά είμαι καινούρια :roll:

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

πρόβλημα σε compilation σε κλάση αντικειμένου

Δημοσίευση από virxen75 » 25 Ιούλ 2010 01:02

φτιάξε την κλάση mainDish έτσι

Κώδικας: Επιλογή όλων

public class mainDish{
     private int meatprice=8;
     private int fishprice=12;
     private int pastaprice=4;
     public String[] foodname=new String[]{"meat","fish","pasta"};//για να είναι ορατή με το extend που κάνεις
public mainDish(){//για να γίνει το extend στην άλλη κλαση prices
}
public mainDish(int a){
	chooseFood(a);
}
public void chooseFood(int a){
       System.out.println("Menu includes "+foodname[0]+" "+foodname[1]+" "+foodname[2]);
   System.out.println("You have chosen "+foodname[a]);
   if (foodname[a].equals("meat")){//έτσι γίνεται σύγκριση 2 strings
     System.out.println(meatprice);
   }else if (foodname[a].equals("fish")){
     System.out.println(fishprice);
   }else if (foodname[a].equals("pasta")){
     System.out.println(pastaprice);
   }
}
}


cocoflop
Δημοσιεύσεις: 46
Εγγραφή: 23 Αύγ 2007 19:51

πρόβλημα σε compilation σε κλάση αντικειμένου

Δημοσίευση από cocoflop » 26 Ιούλ 2010 03:24

Καλά τα λέει ο virxen75...

Εντελώς ακαδημαϊκά και φιλικά, θα πρότεινα να μελετήσεις και το παράδειγμα με τα θηλαστικά για να κατανοήσεις τις κλάσεις (νομίζω ότι είναι καλό για όποιον μαθαίνει Object Oriented προγραμματισμό).

π.χ.

Mamal
|_Dog
|_Human

Οι κλάσεις χρησιμοποιούνται για να αναπαραστήσουν μια οντόντητα, ομαδοποιόντας τα χαρακτηριστικά και τις ενέργειες της (αλλά εντάξει αυτά είναι λεπτομέρειες τις οποίες θα τις μάθεις με τον καιρό :) ).

vassilianna
Δημοσιεύσεις: 3
Εγγραφή: 24 Ιούλ 2010 15:59

πρόβλημα σε compilation σε κλάση αντικειμένου

Δημοσίευση από vassilianna » 26 Ιούλ 2010 14:44

ευχαριστώ πολύ!!! κάτι ακόμη: αν δεν έκανα extend θα μπορούσα να παραλείψω αυτό το κομμάτι του κώδικα (δίπλα στα σχόλια)? Πάντως, το να διαβάζεις τη θεωρία είναι ανεπαρκές, για μένα τουλάχιστον.Έχω διαβάσει όλο το κεφάλαιο στα αγγλικά και έχω διαβάσει και τα παραδείγματα στην πράξη τα βρίσκω σκούρα..σας ευχαριστώ πολύ, η βοήθειά σας ήταν πολύτιμη!

cocoflop
Δημοσιεύσεις: 46
Εγγραφή: 23 Αύγ 2007 19:51

πρόβλημα σε compilation σε κλάση αντικειμένου

Δημοσίευση από cocoflop » 26 Ιούλ 2010 18:22

Χρειάζεται εξάσκηση και να κάνεις πολλές ερωτήσεις εδώ στο φόρουμ, θα δεις σε λίγους μήνες ότι θα μπορείς να λύσεις απορίες άλλων παιδιών, πολύ σημαντικό! :)

αν δεν έκανα extend θα μπορούσα να παραλείψω αυτό το κομμάτι του κώδικα (δίπλα στα σχόλια)?

Δεν κατάλαβα ακριβώς τι εννοείς, μήπως εννοείς να καλούσες την μέθοδο chooseFood από την μαμά mainDish; Επειδή βλέπω πως και στον constructor της prices έχεις ακριβώς τον ίδιο κώδικα (ενώ πρέπει να αποφεύγεις την επανάληψη κώδικα).

vassilianna
Δημοσιεύσεις: 3
Εγγραφή: 24 Ιούλ 2010 15:59

πρόβλημα σε compilation σε κλάση αντικειμένου

Δημοσίευση από vassilianna » 28 Ιούλ 2010 11:37

ναι αυτό εννοώ, όσο για την επανάληψη κώδικα, δεν πρόκειται να χρησιμοποιήσω τον κώδικα πάνω από 1 φορά.

όσο για το αν θα μπορώ να λύσω απορίες άλλων σε λίγους μήνες, θα με τιμούσε ιδιαίτερα, αρκεί να μπορέσω να έχω λύσει τις δικές μου απορίες σε ένα μήνα!

Απάντηση

Επιστροφή στο “Java”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες