thappp.tp Δημοσ. 16 Νοεμβρίου 2012 Δημοσ. 16 Νοεμβρίου 2012 παδια θελω να κανω ενα προγραμμα με θερμοκρασιες στην JAVA !θελω να υπολογιζει μεγιστο ελαχιστο και Μ.Ο θερμοκρασιων για διαφορες πολεις.Αρχικα ο χρηστης θελω να εισαγει εναν αριθμο ο οποιος θα υποδηλώνει τον αριθμο των δεδομενων που θα εισαχθουν. καθε δεδομενο θα ειναι το ονομα μιας πολης και η θερμοκρασια της. για παραδειγμα τετοια δεδομενα μπορει να ειναι athina 25.4 lamia 20.5 kalamata 10.3 athina 5.2 athina 9.1 kalamata 14.5 οποτε θα εμφανιζει athina max 25.4,min 5.2 M.O. 13.2 lamia max 20.5 min 20.5 M.O. 20.5 kalamata max 14.5 min 10.3 M.O. 12.4 καταρχας χρειαζεται ενας μονοδιαστατος πινακας για τα ονομα,για τις θερμοκρασιες ομως τι να χρησιμοποιήσω μονοδιαστατο ή δισδιάστατο; Σημειωση μια πολη μπορει να εμφανιζεται περισσοτερο απο 1 φορα, και σε τυχαια θεση(οπως στο παραδειγμα) καμια ιδεα??
nilosgr Δημοσ. 17 Νοεμβρίου 2012 Δημοσ. 17 Νοεμβρίου 2012 Μια καλή ιδέα ήταν να χρησιμοποιείς ArrayList<Entry<String, Double>>. Αν δεν ξέρεις τι είναι αυτό που έγραψα, τότε χρησιμοποίησε έναν πίνακα από String για τις πόλεις (όπως σωστά είπες) κι έναν πίνακα από double για τις θερμοκρασίες. Επίσης μια καλή ιδέα είναι να κανείς μια κλάση πχ City, που θα έχει ένα παιδιο για το όνομα και ένα για τη θερμοκρασία.
ZAKKWYLDE Δημοσ. 17 Νοεμβρίου 2012 Δημοσ. 17 Νοεμβρίου 2012 Θα κάνεις ενα class City με instance variables String name και ArrayList<Float> temperature για τις θερμοκρασίες. Στη συνέχεια θα κάνεις παλι ενα ArrayList<City> cities όπου θα εισάγεις City objects. Επίσης θέλεις ένα ArrayList<String> tokens όπου θα αποθηκεύεις τα tokens απο τη γραμμή εντολών. Π.χ. athina(token 0) 15(token 1) και θα τα διαβάζεις με τη κλάση Scanner ή ένα String array size 2 έστω. Μετα θα λες, αν στο Arraylist με τα Cities δεν υπάρχει το "athina" το δημιουργώ (new City("Athens")) και προσθέτω στο Arraylist temperatures τη θερμοκρασία. Αν υπάρχει, απλά προσθέτω στο ArrayList temperatures με τις θερμοκρασίες τη θερμοκρασία της αντίστοιχης πολης. Όλα αυτά προυποθέτουν κάποια εξοικείωση με το ArrayList αλλά είναι πιο εύκολο απο τα arrays...απλα το syntax ορισμένες φορές ξεφεύγει.
ZAKKWYLDE Δημοσ. 17 Νοεμβρίου 2012 Δημοσ. 17 Νοεμβρίου 2012 Στο συγκεκριμένο πρόγραμμα καμία διαφορά για να πώ την αλήθεια. Απλά δεν φαντάζομαι να χρειάζεται την ακρίβεια που προσφέρουν οι Double, οπότε αν είχε ξέρω γω, κανα array με 100.000 elements θα είχε ένα μικρό performance gain. Αλλα οκ πρακτικά στη περίπτωσή μας δεν έχει διαφορά.
thappp.tp Δημοσ. 17 Νοεμβρίου 2012 Μέλος Δημοσ. 17 Νοεμβρίου 2012 Καταρχας ξεχασα να πω οτι ειμαι αρχάριος ακομα στην java,για την ακριβεια κανω 2 μηνες και αυτο ειναι το 2 μου προγραμμα. επισεις δεν σας ειπα οτι δεν μπορω να χρησιμοποιησω ετοιμες συναρτησεις ή μεθοδους που λυνουν το προβλημα. απο εκει και περα... Senior Member τι ειναι το ArrayList<Entry<String, Double>> και για την θερμοκρασιες ειναι καλυτερο μονοδιαστατο; Junior Member τι ειναι instance variables, και το ArrayList αν μπορειτε εξηγηστε μου τι ειναι το ArrayList τι κανει και πως συντασεται γιατι απο οτι βλεπω ειναι βολευει αρκετα...ευχαριστω
ZAKKWYLDE Δημοσ. 17 Νοεμβρίου 2012 Δημοσ. 17 Νοεμβρίου 2012 Ti junior και senior member βρε τα ονόματά μας είναι πάνω απο αυτό. Λοιπόν απο τις δευτερες ερωτήσεις σου συμπεραίνω ότι είσαι εντελώς αρχάριος. Το instance variable είναι βασικός όρος π.χ. Πολύ σύντομα...ένα αντικείμενο ορίζεται απο το όνομά του, την κατάσταση του (τα instance variables) και τη συμπεριφορά του (τα methods). Τα instance variables είναι μεταβλητές λοιπόν οι οποίες έχουν διαφορετικές τιμές για κάθε αντικέιμενο μιας κλάσης. Απο την άλλη έχεις τα class variables τα οποία έχουν κοινή τιμή για όλα τα αντικείμενα της συγκεκριμένης κλάσης. Το ArrayList είναι μια έτοιμη κλάση της Java η οποία ουσιαστικά είναι ένα array το οποίο μεταβάλλει αυτόματα το μέγεθός του καθώς προσθέτεις elements. Αρα βολεύει όταν δεν ξέρεις πόσα Elements έχεις....όπως στη περίπτωσή σου που δεν ξέρεις πόσες θερμοκρασίες θα εισάγει ο χρήστης. Επειδή είσαι όμως αρχάριος θα σου έλεγα να παίξεις με τα arrays για αρχή για να δεις πως λειτουργούν και τις ιδιαιτερότητές τους κτλ. Επίσης κάνε κάτι πιο απλό γιατί ο τρόπος που σου είπα θα σε ζορίσει λίγο. Απλά θα έλεγα βάλε ένα 2 dimensional array απο Strings ξέρω γω 25x25 και στη πρώτη στήλη θα βάζεις πάντα τη πόλη και σε όλες τις άλλες τις θερμοκρασίες σε μορφή String. Οπότε όταν θα δέχεσαι το user input θα κοιτάς αν υπάρχει στο array to String. Αν όχι θα το προσθέτεις και μετά τη θερμοκρασία. Αν υπάρχει ήδη το String θα βρίσκεις ποια στήλη είναι κενή και θα βάζεις το επόμενο temperature. Όταν θα θέλεις να υπολογίσεις to avg απο τα temperature απλά θα κάνεις Float.valueOf(String) για να μετατρέψεις το String σε Float και να μπορείς να κάνεις υπολογισμούς. Αυτό νομίζω είναι ευκολότερο για να μη μπλέξεις με ArrayLists και ιστορίες προς το παρόν.
thappp.tp Δημοσ. 17 Νοεμβρίου 2012 Μέλος Δημοσ. 17 Νοεμβρίου 2012 sorry για τα ονοματα, λαθος copy...οπως ειπα και στο πρωτο μου σχολιο ο χρηστης μου δινε πρωτα εναν αριθμο ο οπιος δειχνει ποσα ονοματα πολεων θα εισαχθουν και κατα συνεπεια ποσες θερμοκρασιες(αφου για καθε ενα ονομα μιας πολης υπάρχει και μια θερμοκρασια) αρα ξερω εκ των προτερων ποσα δεδομενα θα εισαχθουν.ξανα λεω οτι για παραδειγμα η πολη αθηνα μπορει να εισαχθει πχ 3 φορες αλλα δεν ειναι απαραίτητο να διαβαστουν ολες μαζι δηλαδη θα ειναι καπως ετσι athina 25.4 lamia 20.5 kalamata 10.3 athina 5.2 athina 9.1 kalamata 14.5 Τωρα εγω απαγορευεται να χρησιμοποιησω αλλες βιβλιοθηκες ή πακετα εκτος απο τα προκαθορισμενα πακετα της JAVA και το acm.program.*αλλα ουτε μπορω να χρησιμοποιησω ετοιμες συναρτησεις ή μεθοδους που λυνουν το προβλημα.. το ArrayList ειναι κατι απο τα παραπανω ωστε να απαγορευεται να το χρησιμοποιήσω;
ZAKKWYLDE Δημοσ. 17 Νοεμβρίου 2012 Δημοσ. 17 Νοεμβρίου 2012 Το ArrayList ανήκει στο πακέτο java.util. το οποίο πρέπει να το κάνεις import. Τώρα δεν ξέρω τι εννοείς με το προκαθορισμένο. Πάντως δεν είναι external library. Πάντως με βάση την εκφώνηση δεν σου χρειάζεται το ArrayList
Directx Δημοσ. 17 Νοεμβρίου 2012 Δημοσ. 17 Νοεμβρίου 2012 Η άσκηση μπορεί να λυθεί αρκετά "κομψά" (ας πούμε) με έναν πίνακα και ένα class, το πιο tricky τμήμα της είναι η καταχώρηση των μίνιμουμ & μάξιμουμ θερμοκρασιών αν σε αυτές μπορούν να δηλωθούν και τιμές υπό το μηδέν.
thappp.tp Δημοσ. 18 Νοεμβρίου 2012 Μέλος Δημοσ. 18 Νοεμβρίου 2012 Directx τι ακριβως εννοεις με τα μινιμουμ και τα μαξιμουμ; υπαρχει καποιο προβλημα αν αυτες ειναι κατο απο το μηδεν;
Directx Δημοσ. 18 Νοεμβρίου 2012 Δημοσ. 18 Νοεμβρίου 2012 Directx τι ακριβως εννοεις με τα μινιμουμ και τα μαξιμουμ; υπαρχει καποιο προβλημα αν αυτες ειναι κατο απο το μηδεν; Απλά κατά την πρώτη καταχώρηση της πόλης στον πίνακα φρόντισε οι σταθερές στις οποίες αποθηκεύεις την ελάχιστη & μέγιστη θερμοκρασία της να λάβουν κοινή τιμή (την πρώτη μέτρηση θερμοκρασίας) ώστε μετά να μπορείς να συγκρίνεις άνετα τις τυχών νέες θερμοκρασίες που μπορεί να ορίσει ο χρήστης ανεξαρτήτως πρόσημου. Μπορεί να ακούγεται τετριμμένο αλλά θέλει προσοχή καθώς κυκλοφορούν διάφορες συνταγές (πχ. αρχικοποίηση τιμών ως μηδέν ή ως .MIN_VALUE/.MAX_VALUE) που λειτουργούν θαυμάσια για θετικούς αριθμούς αλλά δεν διαχειρίζονται επιτυχώς περιπτώσεις εισαγωγής αρνητικών τιμών -και επειδή έχω συναντήσει κόσμο που μπλοκάρει με αυτό το θέμα έκρινα σκόπιμο να το αναφέρω. Πέραν αυτού, η άσκηση δεν έχει κάποια ιδιαίτερη δυσκολία.
thappp.tp Δημοσ. 20 Νοεμβρίου 2012 Μέλος Δημοσ. 20 Νοεμβρίου 2012 Ξερει κανεις μπορεις να εισαγεις τα δεδομενα στο προγραμμα, αλλα οχι απο το πληκτρολογιο αλλα απο ενα αποθηκευμενο κειμενο(txt), στο οποιο σε καθε σειρα εχεις τα δεδομενα που θα σου ζητησει?
nilosgr Δημοσ. 20 Νοεμβρίου 2012 Δημοσ. 20 Νοεμβρίου 2012 αν το τρεχεις απο κονσολα >java MyClassWithMain.class < mTxtWithInput.txt
thappp.tp Δημοσ. 20 Νοεμβρίου 2012 Μέλος Δημοσ. 20 Νοεμβρίου 2012 συγκεκριμενα το τρεχω απο το τερματικο, αλλα εχω ubuntu(δεν ξερω αν εχει σημασια..) τελος παντων......δινω αυτην την εντολη-----> java thermokrasia2.class < thermo.txt και μου βγαζει αυτο το μυνημα ------> Exception in thread "main" java.lang.NoClassDefFoundError: thermokrasia2/class Caused by: java.lang.ClassNotFoundException: thermokrasia2.class at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) Could not find the main class: thermokrasia2.class. Program will exit. τι ακριβως παει λαθος?
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα