profitis Δημοσ. 2 Μαΐου 2007 Δημοσ. 2 Μαΐου 2007 Χαιρετώ όλους τους Insomniacs... Εχουμε μία ασκησούλα στην Java οπου πρέπει να υλοποιήσουμε μία απλή αριθμομηχανή.Δηλαδή να υποστηρίζονται παρενθέσεις μονού επιπέδου και οι απλές πράξεις (+,-,*,/ ) Δηλαδή απο κονσόλα πρέπει να διαβάζουμε π.χ: 7+8-(5-3) Aρχικά διαβάζουμε όλη την έκφραση σαν String.Mε την toCharArray(); μπορούμε να διοχετεύσουμε χαρακτήρα χαρακτήρα την έκφραση σε έναν πίνακα char.Oμως έτσι δεν αποθηκεύονται "σωστα" οι αριθμοί που δεν ειναι μονοψήφιοι.Μετά ο πίνακας θα διοχετευτεί σε μία στοίβα ωστε να υλοποιηθεί ο αλγόριθμός για το κομπιουτεράκι... Ομως μέχρι που ν αφτάσω εκει με προβληματίζει πάρα πολύ αυτό...Και χαρακτήρα χαρακτήρα να το κάνω [atChar(int);] πάλι στον πίνακα ένα ένα ψηφίο μου αποθηκεύεται είτε char είναι ο πίνακας ή integer . Επιπλέον υπάρχει τρόπος κατα το διάβασμα να αποφύγω το διάβασμα των κενων ή με μία μέθοδο θα καθαρίσω το Input String;
Dikemou Δημοσ. 2 Μαΐου 2007 Δημοσ. 2 Μαΐου 2007 Δες την isDigit(). Όσο ο χαρακτήρας είναι ψηφίο, κάνε τον append σε ένα temp String. Μόλις βρεις μη-digit χαρακτήρα, πάρσαρε το String με την parseInt() και βάλε τον int σου στον πίνακα ή στην στοίβα. Για να καθαρίσεις τα κενά δες τη replaceAll(). Γενικά ένας τρόπος για να παρσάρεις μαθηματικές εκφράσεις είναι να φτιάξεις ένα δικό σου recursive descent parser. Ή ακόμα καλύτερα να χρησιμοποιήσεις το javacc σε συνδυασμό με BNF που ορίζεις εσύ ανάλογα τις ανάγκες σου και την πολυπλοκότητα των εκφράσεων.
profitis Δημοσ. 3 Μαΐου 2007 Μέλος Δημοσ. 3 Μαΐου 2007 Dikemou,σε ευχαριστώ πάρα πολύ για το reply... την isDigit την κατάλαβα σχετικά απλα τα Αγγλικά μου δεν είναι και τέλεια.Σαν όρισμα θα δέχεται ένα στοιχείο Char?Οταν λες append;Σκέφτομαι να πάω να κάνω την εισαγωγή σε ένα char array αλλα επειδή δεν θα ξέρω το μήκος κάθε φορά του ψηφιου θα πρέπει με μετρητές να κάνω την δέσμευση μνήμης για το char array και στην συνέχεια να το κάνω απο char--->String--->Integer. Eπίσης την ReplaceAll δίνεις σαν πρώτο όρισμα τι ακριβώς θα ήθελες να αντικαταστήσεις και σαν δεύτερο όρισμο με το τι θα βάλεις;Πως θα του πεις να εξαφανίσει το κενο? str.replaceAll(" ",""); είναι έγκυρο κάτι τέτοιο;
Nereus Δημοσ. 5 Μαΐου 2007 Δημοσ. 5 Μαΐου 2007 Επειδή έχω και εγω την ίδια άσκηση θα ρωτήσω τα εξής: Πως μετατρέπω: 1. απο float σε String και char? 2. απο String ή char σε float? (το αντίστροφο του 1) 3. απο char σε String?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.