Bspus Δημοσ. 1 Δεκεμβρίου 2006 Δημοσ. 1 Δεκεμβρίου 2006 Ετσι οπως ειναι τωρα (και με τη διορθωση που αναφερθηκε), παιρνει input μια φορα απο τα args και αν το πρωτο arg ειναι "input" καταχωρει την εγγραφη σε μια αδεια "βαση" (η οποια ειναι ενας πινακας 100 θεσεων) στη θεση 0. Αν το πρωτο arg δεν ειναι "input", υποθετοντας οτι θα ειναι ονομα εγγραφης, ψαχνει τη βαση αν υπαρχει αυτο το ονομα, και αν υπαρχει, δειχνει τα στοιχεια της εγγραφης. Ομως η βαση θα ειναι παντα αδεια οποτε δεν θα βρισκει τιποτα. Αν θες να σωζεις τις εγγραφες, μπορεις να το κανεις με απλα αρχεια κειμενου. Αν σου αρκει η βαση να θυμαται τις εγγραφες οσο ειναι ανοιχτη τοτε θες ενα loop για να παιρνεις συνεχως input απο το χρηστη.
ata1983 Δημοσ. 1 Δεκεμβρίου 2006 Μέλος Δημοσ. 1 Δεκεμβρίου 2006 Το έκανα αυτό αρχικά αλλά ο eclipse μου το βγάζει λάθος και για αυτό το αντικατέστησα με αυτό: object.name=args[1]; object.tele=args[2]; object.mail=args[3]; στο οποίο δεν εντοπίζει λάθος. Αλλά έχεις δίκαιο και εγώ έτσι ήθελα να το κάνω για αυτό και συμπεριέλαβα τον constructor. edit:Βspus τώρα είδα ότι έχει και 2η σελ. Κατάλαβα, δηλάδή όλο το σκεπτικό έχει λάθος αλλά γιατί ο πίνακας παραμένει πάντα άδειος?Εννοω αφού έχω κάνει τον πίνακα και για i=1 πχ αποθηκεύει τρία πεδία κοκ. Γιατί να μην διατηρεί αυτά τα δεδομένα μόνιμα? Θα το δοκιμάσω και με read write εντολές
Bspus Δημοσ. 2 Δεκεμβρίου 2006 Δημοσ. 2 Δεκεμβρίου 2006 > public class Organizer { String name,tele,mail; Organizer(String n, String t, String m) { name = n; tele = t; mail = m; } public static void main(String args[]){ Organizer object[]=new Organizer[100]; int i=0; if(args[0].equals("input")){ object[i] = new Organizer( args[1], args[2], args[3]); i++; } else { for(int k=0;k<=i;k++){ if(args[0]==object[k].name){ System.out.println("Name:"+object[k].name+" Telephone:"+object[k].tele+" Email:"+object[k].mail); } } } } } Ετσι κανει compile. Προσεξε τη γραμμη if(args[0].equals("input")){ αντι για αυτο που ειχες με το ==. Αυτο που ειχες εσυ ποτε δεν εβγαινε true οποτε παντα πηγαινε στο else Κομματι και ετρωγες exception. Οπως τρως και τωρα δηλαδη, αλλα οχι αμα δωσεις input σαν args[0] και αλλες 3 παραμετρους. Τωρα το γιατι αυτο που ειχες γραψει δεν εβγαζε true ειναι μεγαλη ιστορια. Ισως θα επρεπε μαλιστα να το εξηγησει ο καθηγητης σε ολη την ταξη. Επισης... Το οτι δηλωνεις στην αρχη το array με 100 θεσεις δεν σημαινει οτι δεν πρεπει να δηλωσεις και το καθε κομματι του array ξεχωριστα. Γι αυτο δεν μπορουσες να χρησιμοποιησεις τα object.name κλπ μεσα στο if. Τωρα προσεξε τι κανει ο κωδικας. Υποθετοντας οτι δινεις πχ input n1 t1 m1 Φτιαχνει object (i = 0) και του δινει τις τιμες Το i γινεται απο 0 1 τελος Την επομενη φορα που θα τρεξεις το προγραμμα φυσικα δεν θα υπαρχει η καταχωρηση. Υποθετοντας οτι δινεις πχ n1 t1 m1 Για κ απο 0 ως i (δηλαδη απο 0 ως 0, αφου το i δεν αλλαζει καθολου στο else κομματι) Προσπαθει να κανει συγκριση το args[0] με την καταχωρηση στο object[k].name (κ βεβαια = 0 μονο) Δεν υπαρχει τιποτα εκει ομως. Οχι μονο γιατι δεν θυμαται το προγραμμα τι ειχες βαλει παλιοτερα αλλα γιατι κανενα object του array δεν εχει γινει καν initialised. Οποτε τρως ενα ωραιοτατο exception. Και φυσικα υπαρχει και εδω το θεμα του == για συγκριση String
ata1983 Δημοσ. 3 Δεκεμβρίου 2006 Μέλος Δημοσ. 3 Δεκεμβρίου 2006 οκ ευχαριστώ πολύ, πάντως δεν είναι από τη σχολή αυτό, εγώ σκαρφίζομαι προβληματάκια και προσπαθώ να τα φτιάξω, για αυτό και για τυχόν απορίες αναλαμβάνετε εδώ!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.