Λύσεις java
Συντονιστές: markelos, Ryu, φιάλη klein, meleneemil
- apolski
- Δημοσιεύσεις: 846
- Εγγραφή: Πέμ Ιουν 21, 2007 3:09 pm
- Real Name: ---
- Gender: Male
- Facebook ID: 0
- Τοποθεσία: UK
(JAVA)εργαστηριακη ασκηση #6
Παιδιά μπορεί κάποιος να μου εξηγήσει τον παρακάτω κώδικα σε java(είναι απο εργαστηριακή άσκηση #6):
int base=2;
String binary="";
int remainder; // To upoloipo ths diaireshs
long quotient; // To phliko ths diaireshs
boolean finished=false;
while (!finished){
remainder= (int) (decimal % base);
quotient=decimal/base;
binary= remainder + binary;
if (quotient==0)
finished=true;
else
decimal=quotient;
}
return binary;
Τα σημεία που δεν κατάλαβα τα έκανα bold. Συγκεκριμένα:
(int) (decimal % base);
-Δεν καταλαβαίνω τι κάνει το σύμβολο % και γιατί έχει το (int) μπροστά
remainder + binary;
-Πως γίνεται να έχουμε πρόσθεση long με sting
decimal=quotient;
-???
Ευχαριστω
int base=2;
String binary="";
int remainder; // To upoloipo ths diaireshs
long quotient; // To phliko ths diaireshs
boolean finished=false;
while (!finished){
remainder= (int) (decimal % base);
quotient=decimal/base;
binary= remainder + binary;
if (quotient==0)
finished=true;
else
decimal=quotient;
}
return binary;
Τα σημεία που δεν κατάλαβα τα έκανα bold. Συγκεκριμένα:
(int) (decimal % base);
-Δεν καταλαβαίνω τι κάνει το σύμβολο % και γιατί έχει το (int) μπροστά
remainder + binary;
-Πως γίνεται να έχουμε πρόσθεση long με sting
decimal=quotient;
-???
Ευχαριστω
- O kanenas
- Δημοσιεύσεις: 3246
- Εγγραφή: Κυρ Νοέμ 05, 2006 3:26 pm
- Real Name: Αφροξυλάνθη
- Facebook ID: 0
- Τοποθεσία: Within search engines that search engines that search
- Επικοινωνία:
Re: (JAVA)εργαστηριακη ασκηση #6
Το decimal τι είναι? Παράμετρος της μεθόδου?
Πάντως, o τελεστής % δίνει το υπόλοιπο της διαίρεσης. Οπότε, εδώ στην γραμμήυπολογίζεται το υπόλοιπο της διαίρεσης decimal/base, κάνει casting* σε int και καταχωρεί το αποτέλεσμα στην μεταβλητή remainder.
Για τοΣου λέει ότι αν το ακέραιο μέρος της διαίρεσης decimal/base είναι 0, τότε η διαδικασία έχει τελειώσει και πρέπει να σταματήσει ο βρόχος (γι'αυτό finished=true), διαφορετικά η μεταβλητή finished παραμένει false και στην μεταβλητή decimal καταχωρείται το μη μηδενικό ακέραιο μέρος (πηλίκο) της προηγούμενης διαίρεσης, ώστε να συνεχιστεί ο βρόχος με νέα τιμή για το decimal κ.ο.κ.
*Για το casting μπορείς να διαβάσεις στο βιβλίο στην σελ. 60.
Πάντως, o τελεστής % δίνει το υπόλοιπο της διαίρεσης. Οπότε, εδώ στην γραμμή
Κώδικας: Επιλογή όλων
remainder= (int) (decimal % base);
Για το
Κώδικας: Επιλογή όλων
if (quotient==0)
finished=true;
else
decimal=quotient;
*Για το casting μπορείς να διαβάσεις στο βιβλίο στην σελ. 60.
R.I.P.
Life is so vain, but death equals pain
So let's make one more attempt and live with nothing to gain
So let's make one more attempt and live with nothing to gain
Re: Λύσεις java
Ο binary ειναι string και ο remainder ειναι int.
Οταν κανεις "binary= remainder + binary;" Ουσιαστικα βαζεις εναν αριθμο διπλα σε εναν αλφαριθμητικο.
πχ
Αν το Binary ειναι "2" (το εβαλα σε " " για να φαινεται οτι ειναι ΓΡΑΜΜΑ και ΟΧΙ ΑΡΙΘΜΟΣ)
και το remainder ειναι 3
Με την διαταγη αυτη το binary μετα θα ειναι "32".
Αν ηταν "binary=binary + remainder;" Τοτε θα γινοτανε "23".
Οταν κανεις "binary= remainder + binary;" Ουσιαστικα βαζεις εναν αριθμο διπλα σε εναν αλφαριθμητικο.
πχ
Αν το Binary ειναι "2" (το εβαλα σε " " για να φαινεται οτι ειναι ΓΡΑΜΜΑ και ΟΧΙ ΑΡΙΘΜΟΣ)
και το remainder ειναι 3
Με την διαταγη αυτη το binary μετα θα ειναι "32".
Αν ηταν "binary=binary + remainder;" Τοτε θα γινοτανε "23".
Ναι, [you] σε παρακολουθώ!
@[you]
@[you]
- apolski
- Δημοσιεύσεις: 846
- Εγγραφή: Πέμ Ιουν 21, 2007 3:09 pm
- Real Name: ---
- Gender: Male
- Facebook ID: 0
- Τοποθεσία: UK
Re: Λύσεις java
Οκ καταλαβα, ευχαριστω πολυ για τις απαντησεις
- alexaiv
- Δημοσιεύσεις: 101
- Εγγραφή: Παρ Ιούλ 13, 2007 11:43 am
- Real Name: Αλέξης Αϊβαλιώτης
- Gender: Male
- Τοποθεσία: Αθήνα
Re: Λύσεις java
Υπάρχει κάπου η λύση της προγραμματιστικής άσκησης 2?? Αντιμετωπίζω μια μικρή δυσκολία στο να καταλάβω τι ακριβώς κάνει η κάθε μέθοδος που ζητάει.
Η σκληρή δουλειά δεν σκότωσε ποτέ κανέναν, αλλά γιατί να παίζουμε με την τύχη μας?!?
"Μοντέλο-πρότυπο της γνώσης είναι τα μαθηματικά. Οι αισθήσεις και η φαντασία είναι κατώτερες γνωστικές δυνάμεις, τις οποίες δεν μπορούμε να εμπιστευόμαστε με την ίδια βεβαιότητα." - René Descartes
"Μοντέλο-πρότυπο της γνώσης είναι τα μαθηματικά. Οι αισθήσεις και η φαντασία είναι κατώτερες γνωστικές δυνάμεις, τις οποίες δεν μπορούμε να εμπιστευόμαστε με την ίδια βεβαιότητα." - René Descartes
- theos
- Δημοσιεύσεις: 762
- Εγγραφή: Κυρ Νοέμ 05, 2006 4:53 am
- Real Name: Αριστοτέλης-Εμμανουήλ Θάνος-Φίλης (Μάνος) ge04017
- Gender: Male
- Τοποθεσία: Alwaysland
Re: Λύσεις java
Φίλε alexaiv δες στην βιβλιοθήκη της java τι κάνουν οι μέθοδοι της κλάσης string buffer. εδώ
Αν δεν βγάλεις άκρη με κάποια συγκεκριμένη μέθοδο, ρώτα και όλο και κάποιος θα σου πει
Αν δεν βγάλεις άκρη με κάποια συγκεκριμένη μέθοδο, ρώτα και όλο και κάποιος θα σου πει
Λογική είναι η τέχνη να κάνεις λάθος με αυτοπεποίθηση!!!
Re: Λύσεις java
Ο Σ. στη σελιδα του, μαζι με την ασκηση, μας δινει και ενα προγ. το οποιο ειναι η ασκηση λυμενη αλλα χωρις τον κωδικα. Απλα μπορεις να τον εκτελεσεις και να δεις τα σχολια (κατι σαν αυτο που σου δινει ο θεος αλλα καλυτερο μιας που μπορεις να "παιξεις" μαζι του και να καταλαβεις καλυτερα). Περα απο αυτο ομως
1)Πως βρισκουμε οτι ενας πινακας ειναι αδειος?
2)Πως διπλασιαζουμε ενα πινακα? (εφτιαξα μια μεθοδο για αυτη τι δουλεια αλλα δεν μπορω να την καλεσω. Την εβαλα private, εχει σημασια?)
3)Ποιες μεθοδοι ειναι static και πως τις ξεχωριζουμε απο τις αλλες (ειδικα τωρα που στις περισσοτερες θα καλω και την μεθοδο για διπλασ. του πινακα)
1)Πως βρισκουμε οτι ενας πινακας ειναι αδειος?
2)Πως διπλασιαζουμε ενα πινακα? (εφτιαξα μια μεθοδο για αυτη τι δουλεια αλλα δεν μπορω να την καλεσω. Την εβαλα private, εχει σημασια?)
3)Ποιες μεθοδοι ειναι static και πως τις ξεχωριζουμε απο τις αλλες (ειδικα τωρα που στις περισσοτερες θα καλω και την μεθοδο για διπλασ. του πινακα)
Ναι, [you] σε παρακολουθώ!
@[you]
@[you]
- theos
- Δημοσιεύσεις: 762
- Εγγραφή: Κυρ Νοέμ 05, 2006 4:53 am
- Real Name: Αριστοτέλης-Εμμανουήλ Θάνος-Φίλης (Μάνος) ge04017
- Gender: Male
- Τοποθεσία: Alwaysland
Re: Λύσεις java
1) Τρέχεις τον πίνακα και αν όλα τα στοιχεία του είναι 'null' τότε είναι "άδειος". Μπορείς στο if να προσθέσεις και ένα break αλλά ειλικρινά δεν θυμάμαι πως χρησιμοποιείται για να με βγάλει και από το if και από το for
3) Όταν κάτι είναι static, μπορεί να εκτελεστεί και από την κλάση κατευθείαν, δεν χρειάζεται δηλαδή να φτιάξεις κάποιο αντικείμενο για να χρησιμοποιήσεις τη μέθοδο. Στον bluej όταν πατήσεις δεξί click σε κάποια κλάση σου βγάζει και τις static μεθόδους εκτός από τη δημιουργία αντικειμένων
Για το 2) δεν είμαι σίγουρος αν υπάρχει άμεσος τρόπος... Ένας τρόπος πάντως είναι να δημιουργήσεις ένα κανούργιο πίνακα με το ζητούμενο μέγεθος και να αντιγράψεις τα στοιχεία που είχες στον προηγούμενο...
Κώδικας: Επιλογή όλων
boolean isEmpty=true;
for (int i=0; i<a.length; i++)
{
if (a[i]=!null)
isEmpty=false;
}
Για το 2) δεν είμαι σίγουρος αν υπάρχει άμεσος τρόπος... Ένας τρόπος πάντως είναι να δημιουργήσεις ένα κανούργιο πίνακα με το ζητούμενο μέγεθος και να αντιγράψεις τα στοιχεία που είχες στον προηγούμενο...
Λογική είναι η τέχνη να κάνεις λάθος με αυτοπεποίθηση!!!
Re: Λύσεις java
3) Καταλαβα
1) Καταλαβα... νομιζω
2) Εφτιαξα μια μεθοδο κτλ την ειπα doubleA() και γραφω
και μου απανταει "cannot find symbol - method doubleA()"
1) Καταλαβα... νομιζω
2) Εφτιαξα μια μεθοδο κτλ την ειπα doubleA() και γραφω
Κώδικας: Επιλογή όλων
a=a.double();
Ναι, [you] σε παρακολουθώ!
@[you]
@[you]
- kostas.m
- Δημοσιεύσεις: 118
- Εγγραφή: Τρί Οκτ 23, 2007 3:24 pm
- Real Name: k.mastakas
- Gender: Male
- Facebook ID: 0
- Τοποθεσία: Στο σταυροδρόμι
- Επικοινωνία:
Re: Λύσεις java
LocknLoad, για να διπλασιάσεις το διάνυσμα data, το οποίο είναι μεταβλητή και να κρατήσεις τα στοιχεία του, αρκεί απλά να δημιουργήσεις ένα καινούργιο διάνυσμα έστω temp, με to ίδιο μήκος, στο οποίο να αντιγράψεις τα στοιχεία του data, μετά, αρκεί να δηλώσεις ότι το data γίνεται ένα νέο διάνυσμα διπλάσιου μήκους και να αντιγράψεις τα στοιχεία του temp στο data.
"Πρέπει να μάθουμε, θα μάθουμε" David Hilbert
Re: Λύσεις java
Ναι, αυτο κανω (νομιζω)
Κώδικας: Επιλογή όλων
private char doubleA()
{
char b[];
int l=2*a.length;
b=new char[l];
for (int i=0; i< a.length; i++){
b[i]=a[i];}
for (int i=0; i<l; i++){
a[i]=b[i];}}
Ναι, [you] σε παρακολουθώ!
@[you]
@[you]
- kostas.m
- Δημοσιεύσεις: 118
- Εγγραφή: Τρί Οκτ 23, 2007 3:24 pm
- Real Name: k.mastakas
- Gender: Male
- Facebook ID: 0
- Τοποθεσία: Στο σταυροδρόμι
- Επικοινωνία:
Re: Λύσεις java
Ναι, αυτό κάνεις, αλλά δεν διπλασιάζεις το διάνυσμα α, οπότε μετά από λίγο βγαίνει το α βγαίνει εκτός ορίων καθώς θα προσπαθήσεις να εισάγεις στοιχεία στις θέσεις a.length,a.length+1,...,2*a.length-1 θέσεις που δεν υπάρχουν στο α, οπότε αυτό δεν μπορεί να γίνει. Κάνε το ίδιο που έκανες απλά όπου l, βάλε l=a.length και b=new char[l];
for (int i=0; i< l; i++){
b=a;}
και μετά a=new char[2*l]
και for (int i=0; i<l; i++){
a=b;}}
for (int i=0; i< l; i++){
b=a;}
και μετά a=new char[2*l]
και for (int i=0; i<l; i++){
a=b;}}
"Πρέπει να μάθουμε, θα μάθουμε" David Hilbert
Re: Λύσεις java
Λυθηκε με msn η αποροια.
και την καλω με
Κώδικας: Επιλογή όλων
private char[] doubleA(){
char b[];
int l=a.length;
b=new char[l];
for (int i=0; i< l; i++){
b[i]=a[i];}
a=new char[2*l];
for (int i=0; i<l; i++){
a[i]=b[i];}
return a;}
Κώδικας: Επιλογή όλων
a=doubleA();
Ναι, [you] σε παρακολουθώ!
@[you]
@[you]