oallosmoueautos Δημοσ. 29 Οκτωβρίου 2012 Δημοσ. 29 Οκτωβρίου 2012 Ειμαι καινουργιος στον προγραμματισμο και προσπαθω να κανω μια ασκηση.. Εχω καταφερει να φτιάξω το πρωτο ερώτημα κα θελώ αλλα δύο.. Οποιος θελει να βοηθησει μου λεει..
BALZ Δημοσ. 29 Οκτωβρίου 2012 Δημοσ. 29 Οκτωβρίου 2012 Ειμαι καινουργιος στον προγραμματισμο και προσπαθω να κανω μια ασκηση.. Εχω καταφερει να φτιάξω το πρωτο ερώτημα κα θελώ αλλα δύο.. Οποιος θελει να βοηθησει μου λεει.. Γράψε την εκφώνηση και τι έχεις κάνει ,για να δούμε αν μπορούμε να σε βοηθήσουμε
oallosmoueautos Δημοσ. 29 Οκτωβρίου 2012 Μέλος Δημοσ. 29 Οκτωβρίου 2012 (επεξεργασμένο) .Β Ο Η Θ Ε Ι Α !!!!! Κατι δεν παει καλα.. Λοιπον έχω.. > public class Example{ private int a; public Example(){ a=0; } public int set (){ return a+1; } } και > public class TestExample { public static void main(String []args){ Example exp= Example(); for(int i = 0; i < 4; i++) { exp.set(); } } } Τί κανω λάθος γαμοτο κεφάλι μου μεσα???!!?!?!! Θελω το α να παρει την τιμη 4 στο τελος!!! Επεξ/σία 29 Οκτωβρίου 2012 από oallosmoueautos
moukoublen Δημοσ. 29 Οκτωβρίου 2012 Δημοσ. 29 Οκτωβρίου 2012 Σε ποια σχολή είσαι; Τι εξάμηνο; Έχετε κάνει άλλο προγραμματισμό πριν; απ ότι βλέπω έχεις κενά σε αρκετά βασικά ζητήματα τα οποία πρέπει να καλύψεις. Και μπορείς να τα καλύψεις αν ασχοληθείς αρκετό χρόνο και με όρεξη και κυρίως διαβάσεις. (Κοινώς αν η ασχολία σου είναι "15 λεπτά προσπαθώ και μετά τα παρατάω", είναι ανεπαρκής μέθοδος) Προσπάθησε να περιγράψεις με λόγια πρώτα αυτό που θες να κάνεις. Να πεις δηλαδή "Θέλω μία συνάρτηση στην κλάση που όταν την καλώ να κάνει τι;;;" Πρέπει να απαντήσεις σε αυτή την ερώτηση, πλήρως και σαφώς. Και μετά πιάσε κώδικα και προσπάθησε να μεταφέρεις την λογική που έθεσες στην απάντηση του ερωτήματος.
georgemarios Δημοσ. 29 Οκτωβρίου 2012 Δημοσ. 29 Οκτωβρίου 2012 Το λαθος ειναι πως εκτος απο τον constructor, δεν αλλαζεις πουθενα την τιμη του a Για δες το παρακατω.... > public class Example{ private int a; public Example(){ a=0; } public void set(){ a = a+1; } }
bnvdarklord Δημοσ. 29 Οκτωβρίου 2012 Δημοσ. 29 Οκτωβρίου 2012 Επισης το αντικειμενο οταν το οριζεις εχεις ξεχασει τον τελεστή new: Example exp = new Example();
oallosmoueautos Δημοσ. 30 Οκτωβρίου 2012 Μέλος Δημοσ. 30 Οκτωβρίου 2012 Επισης το αντικειμενο οταν το οριζεις εχεις ξεχασει τον τελεστή new: Example exp = new Example(); Ναι αυτο το εκανα απο τη βιασυνη μου λαθος.. Το διορθωσα.. Το λαθος ειναι πως εκτος απο τον constructor, δεν αλλαζεις πουθενα την τιμη του a Για δες το παρακατω.... > public class Example{ private int a; public Example(){ a=0; } public void set(){ a = a+1; } } Το λαθος μου ειναι στο return προφανως.. Οταν του βαζω α++ μου δίνει τιμες 1,3,5,7 και οταν του δινω ++α μου βγαζει 2, 4, 6, 8.. Για να μου δινει 1,2,3,4 πρεπει να ειναι void η μεθοδος μονο? Με return δεν γινεται? Στην εκφωνηση μου λεει να κανετε μια μέθοδο μεταλλαξης που θα αυξάνει κατα 1 το α οποτε καλειται η μεθοδος..
georgemarios Δημοσ. 30 Οκτωβρίου 2012 Δημοσ. 30 Οκτωβρίου 2012 που το βαζεις το a++? αν πχ βαλεις αντι για a = a+1 το a++ κανεις το ιδιο, αυξανεις το a κατα 1 προσεξε ομως τις διαφορες αν πεις > a = 1; b = a++; To b θα ειναι 1 και το a θα ειναι 2 αν πεις > a = 1; b = ++a; To b θα ειναι 2 και το a θα ειναι 2 ενω αν πεις > a = 1; b = a + 1; To b θα ειναι 2 και το a θα ειναι 1 Το return που λες εχει νομηα μονο για να επιστρεφεις καποια τιμη μετα την κληση της συναρτησης, μια μεθοδος μεταλλαξης δεν ειναι απαραιτητο να επιστρεφει κατι, απλα αλλαζει τιμη σε μια/καποιες μεταβλητη/ες της κλασσης Έτσι, παρακατω βλεπεις πως δεν χρειαζεται return > public class Example{ private int a; public Example(){ a=0; } public void increaseA(){ // mutation method a++; } public void printA(){ System.out.println(a); } } και > public class TestExample { public static void main(String []args){ Example exp= Example(); System.out.println("a before:"); exp.printA(); for(int i = 0; i < 4; i++) { exp.increaseA(); } System.out.println("a after:"); exp.printA(); } }
moukoublen Δημοσ. 30 Οκτωβρίου 2012 Δημοσ. 30 Οκτωβρίου 2012 Όπως σου είπα στο προηγούμενο ποστ ( που μάλλον δεν έδειξες να ενδιαφέρεσαι ) είναι σημαντικό πριν πιάσεις το τεχνικό ζήτημα, δηλαδή του να γράψεις κώδικα, να έχεις ξεκάθαρο πλήρως το τι θες να κάνεις. Το να μπεις σε μια συζήτηση αν το b = ++a ή b = a++ είναι ίδιο ή όχι δεν έχει να σου προσφέρει κάτι αν δε κάνεις το παραπάνω. Δεν είναι κανένας δύσκολος άθλος. Απλά περιέγραψε με απλά λόγια το τι θες να κάνεις. Θες μια συνάρτηση που κάθε φορά που καλείται να: Αυξάνει το a κατ ένα; Επιστρέφει το a; (σου ζητάει κάτι τέτοιο; ) Και τα δύο; (Αν ναι, γιατί; ) Αν θες μόνο το πρώτο τότε τι δουλεία έχει το return στη συνάρτηση; Δεν σε ρωτάω για να σου κάνω κριτική. Αν προσπαθήσεις να απαντήσεις αυτά τα ερωτήματα θα καταλάβεις καλύτερα το τι θες και πρέπει να κάνεις. Επίσης προσπάθησε να εξηγήσεις με λόγια τι κάνει το κάθε τι που φτιάχνεις. Τι κάνει η συνάρτηση: > public int set (){ return a+1; } ;
oallosmoueautos Δημοσ. 30 Οκτωβρίου 2012 Μέλος Δημοσ. 30 Οκτωβρίου 2012 που το βαζεις το a++? αν πχ βαλεις αντι για a = a+1 το a++ κανεις το ιδιο, αυξανεις το a κατα 1 προσεξε ομως τις διαφορες αν πεις > a = 1; b = a++; To b θα ειναι 1 και το a θα ειναι 2 αν πεις > a = 1; b = ++a; To b θα ειναι 2 και το a θα ειναι 2 ενω αν πεις > a = 1; b = a + 1; To b θα ειναι 2 και το a θα ειναι 1 Το return που λες εχει νομηα μονο για να επιστρεφεις καποια τιμη μετα την κληση της συναρτησης, μια μεθοδος μεταλλαξης δεν ειναι απαραιτητο να επιστρεφει κατι, απλα αλλαζει τιμη σε μια/καποιες μεταβλητη/ες της κλασσης Έτσι, παρακατω βλεπεις πως δεν χρειαζεται return > public class Example{ private int a; public Example(){ a=0; } public void increaseA(){ // mutation method a++; } public void printA(){ System.out.println(a); } } και > public class TestExample { public static void main(String []args){ Example exp= Example(); System.out.println("a before:"); exp.printA(); for(int i = 0; i < 4; i++) { exp.increaseA(); } System.out.println("a after:"); exp.printA(); } } Ευχαριστω για τα παραδείγματα αλλα απο ότι καταλαβα δεν μπορουμε να το κανουμε με return.. Εγκυκλοπαιδικα ρωτάω τωρα.. > public int set(){ return a++; // ΕΔΩ ΝΑ ΜΠΕΙ ΚΑΤΙ ΑΛΛΟ } }
georgemarios Δημοσ. 30 Οκτωβρίου 2012 Δημοσ. 30 Οκτωβρίου 2012 Όπως εγραψε και ο moukoublen πρεπει να ξεκαθαρισεις τι ακριβως θες να κανεις. Αν μπορουμε να το κανουμε με return? Φυσικα, ναι, αλλα γιατι; Γιατι θες να επιστρεψεις την τιμη, που θα χρησιμοποιηθει; Εσυ θες να αλλαξεις την τιμη του a, αυτο γινεται με το a++, το ++ αυξανει την τιμη κατα 1. Καλεις τη μεθοδο οσες φορες θες/χρειαζεσαι, και στο τελος βλεπεις τι τιμη εχει το a (που πρεπει να ειναι ιση με τον αριθμο κλησεων της set)
oallosmoueautos Δημοσ. 30 Οκτωβρίου 2012 Μέλος Δημοσ. 30 Οκτωβρίου 2012 Όπως εγραψε και ο moukoublen πρεπει να ξεκαθαρισεις τι ακριβως θες να κανεις. Αν μπορουμε να το κανουμε με return? Φυσικα, ναι, αλλα γιατι; Γιατι θες να επιστρεψεις την τιμη, που θα χρησιμοποιηθει; Εσυ θες να αλλαξεις την τιμη του a, αυτο γινεται με το a++, το ++ αυξανει την τιμη κατα 1. Καλεις τη μεθοδο οσες φορες θες/χρειαζεσαι, και στο τελος βλεπεις τι τιμη εχει το a (που πρεπει να ειναι ιση με τον αριθμο κλησεων της set) Δεκτα ολα αυτα που λες.. Αν θελεις το κανεις μια με το return για να ξεστραβωθω και γω γιατι μου εσπασε τα νευρα χτες να το ψαχνω..
georgemarios Δημοσ. 30 Οκτωβρίου 2012 Δημοσ. 30 Οκτωβρίου 2012 ελα > public class Example{ private int a; public Example(){ a=0; } public int set(){ // mutation method a++; // increase a by 1 return a; // return the value } public void printA(){ System.out.println(a); } } και > public class TestExample { public static void main(String []args){ Example exp= Example(); for(int i = 0; i < 4; i++) { int a = exp.set(); System.out.println("now a is: " + a); } } }
oallosmoueautos Δημοσ. 30 Οκτωβρίου 2012 Μέλος Δημοσ. 30 Οκτωβρίου 2012 ελα > public class Example{ private int a; public Example(){ a=0; } public int set(){ // mutation method a++; // increase a by 1 return a; // return the value } public void printA(){ System.out.println(a); } } και > public class TestExample { public static void main(String []args){ Example exp= Example(); for(int i = 0; i < 4; i++) { int a = exp.set(); System.out.println("now a is: " + a); } } } Το δοκιμασες αυτο? ΑΚΡΙΒΩΣ ΤΟ ΙΔΙΟ εκανα και γω χτες και μου εβγαζε παλι λαθος αποτέλεσμα.. 1,3,5, 7... Κατσε να το ξαναχτυπησω μηπως ημουν ζαλισμενος αλλα δεν νομμιζω..
georgemarios Δημοσ. 30 Οκτωβρίου 2012 Δημοσ. 30 Οκτωβρίου 2012 Προφανως δεν εκανες "ακριβως" το ιδιο.....
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα