Title: Υπάρχει μέθοδος στην Java....? Post by: ioanna208 on January 15, 2006, 23:00:01 pm Για την java υπάρχει κάποια κλάση ή ξέρει κανείς όταν έχουμε έναν ακέραιο αριθμό, π.χ. 123, πώς μπορούμε να χρησιμοποιήσουμε τα ψηφία ξεχωριστά? Πιο συγκεκριμένα, θέλω να χρησιμοποιήσω την συνάρτηση shift fold η οποία κάνει το εξής:
έστω ότι έχουμε τον αριθμό 1234 και θέλουμε καταρχήν να δούμε απο πόσα ψηφία αποτελείται, για να βρούμε το μεσαίο και μετά να προσθέσουμε το 12 με το 34? Υπάρχει κάποια μέθοδος που να μετράει τα ψηφία ενός ακεραίου και κάποια άλλη μέθοδος που να βλέπει κάποια διαδοχικά ψηφία του αρχικού ακεραίου σαν έναν ξεχωριστό ακέραιο? Title: Re: Υπάρχει μέθοδος στην Java....? Post by: eeVoskos on January 16, 2006, 00:03:18 am Λοιπόν, καταρχήν υποθέτω ότι ο αριθμός είναι int. Βολεύει να χρησιμοποιήσεις αντικείμενο τύπου Integer. Για να μετρήσεις το πλήθος, κώδικας όπως ο παρακάτω αρκεί:
ιnt x = 1234; Integer i = (Integer) x; //μετατροπή του x σε Integer String s = i.toString(); //μετατροπή του i σε String -ο Integer δεν έχει μέθοδο που να επιστρέφει το μήκος του. int arithmos_psifiwn = s.length(); //παίρνουμε το μήκος -σε αριθμό χαρακτήρων!- του s Με πετυχαίνεις σε πιεσμένη στιγμή -η Ασφάλεια θα μας φάει- και δεν μου έρχεται κάτι για τα υπόλοιπα. Αν σκεφτώ κάτι θα επανέλθω! :) Title: Απ: Υπάρχει μέθοδος στην Java....? Post by: Zarathoustra on January 16, 2006, 00:23:55 am Επιπλέον θα χρειαστείς την συνάρτηση Integer.parseInt(String s) η οποία μετατρέπει Strings σε int.Τα ψηφία μπορείς να τα πάρεις με τις κλασσικές συναρτήσεις χειρισμού των String
(δες τις μεθόδους της κλάσης String).Βέβαια κανονικά θα έπρεπε να γράψεις εσύ την συνάρτηση που εξάγει τα ψηφία ενός ακεραίου(για παράδειγμα με διαδοχικές διαιρέσεις με 10,100,1000,.....) αλλά αυτός ο τρόπος με τα string είναι ευκολότερος.Άρα μια μέθοδος είναι: int------>μετατροπή σε string-------->χειρισμός του string(εύρεση μήκους,σπάσιμο σε δυο string,κλπ----------->μετατροπή των string ξανα σε int. Title: Re: Υπάρχει μέθοδος στην Java....? Post by: eeVoskos on January 16, 2006, 00:38:42 am Σωστός ο συνάδελφος!
Ορίστε μια πρόχειρη λειτουργική μέθοδος (για αριθμό ΑΡΤΙΟΥ πλήθους ψηφίων): int x = 1234; Integer i = (Integer) x; String s = i.toString(); int n = s.length(); //αποθήκευση των πρώτου μισού στο c1 CharSequence c1 = s.subSequence(0, n/2); //αποθήκευση των δεύτερου μισού στο c2 CharSequence c2 = s.subSequence(n/2, n); //μετατροπή των c1, c2 ξανά σε 2 int! int i1 = Integer.parseInt(c1.toString()); int i2 = Integer.parseInt(c2.toString()); System.out.println(i1+" kai "+i2); Η συνέχεια-βελτίωση είναι δική σου! :P Title: Re: Υπάρχει μέθοδος στην Java....? Post by: MihalisK on January 16, 2006, 02:22:25 am Λοιπόν αν δε θες να μπλέξεις τα string:
a=πίνακας με μήκος το μέγιστο δυνατό μήκος του αριθμού σου π.χ. α=int[50]; i=1; x=1234; m=x%10; a[1]=m; while(x!=0) { x=x-m; i=i+1; m=x%10; a=m; } τελικά στο i θα έχεις το πλήθος των ψηφίων και στον α τον αριθμό ψηφίο-ψηφίο. Πάνε 2 εξάμηνα από όταν το έκανα αλλά νομίζω ότι έτσι τρεχει. Title: Απ: Υπάρχει μέθοδος στην Java....? Post by: BOBoMASTORAS on January 16, 2006, 03:00:02 am βασικά γίνεται και το εξής
int l,n=1223; byte bytes[]; l=String.valueOf(n).length(); bytes=a.getbytes(String.valueOf(n)); for(i=0;i<l;i++) bytes-=String.valueOf(0).getBytes()[0]; έτσι στο l θα έχεις τον αριθμό των ψηφίων και στον bytes τα ψηφία τα οποία μπορείς να κάνεις typecasting σε ότι θες. Title: Απ: Υπάρχει μέθοδος στην Java....? Post by: fugiFOX on January 16, 2006, 04:12:57 am Δεν διάβασα τις απαντήσεις και ίσως έχει ήδη απαντηθεί.
Εγώ είχα χρησιμοποιησει τη μετατροπή σε πι΄νακα χαρακτήρων και μετά είναι πολύ εύκολο να το χειριστείς. Κόβεις, ράβεις όσους και όποιυς θες |