bazinga13 Δημοσ. 31 Μαΐου 2016 Δημοσ. 31 Μαΐου 2016 Kαλημερα σε ολους τους φιλους,θα θελα να κανω ενα ερωτημα οσον αφορα την Scanner. Ο κωδικας μου ειναι ο παρακατω do { tmp = sc.nextInt(); if(tmp < 1 || tmp > 5) { System.out.println("Enter numbers between(1-5)"); } else { switch(tmp) { case 1 : System.out.println("Enter telephone numbers"); for(int i=0; i < emp.length; i++) { emp[i].setTelephoneNumber(sc.nextLine()); } break; case 2 : System.out.println("Enter certificates"); for(int i=0; i < emp.length; i++) { emp[i].setCertificate(sc.nextLine()); } break; case 3 : System.out.println("Enter languages"); for(int i=0; i < emp.length; i++) { emp[i].setLanguages(sc.nextLine()); } break; case 4 : System.out.println("Enter emails"); for(int i=0; i < emp.length; i++) { emp[i].setEmail(sc.nextLine()); } break; case 5 : System.out.println("Enter Hobbys"); for(int i=0; i < emp.length; i++) { emp[i].setHobby(sc.nextLine()); } break; } } } while(tmp < 1 || tmp > 5); Λοιπον αν δωσω το μεγεθος του Πινακα ας πουμε 4 και επιλεξω την περιπτωση 3 θα μπορω να βαλω 3 τιμες και οχι 4 που ειναι το μεγεθος του Πινακα. Η λυση που βρηκα ειναι αν αντι για emp[i].setHobby(sc.nextLine()); Που επρεπε να δουλευει λογικα διοτι η μεταβλητες στις οποιες αναφερομαι ειναι τυπου String. Το παρακατω ομως δουλευει emp[i].setHobby(sc.next()); Θα θελα να μαθω γιατι συμβαινει αυτο,εψαξα λιγο την κλαση Scanner αλλα δεν πολυ καταλαβα. Σας ευχαριστω.
moutsou Δημοσ. 31 Μαΐου 2016 Δημοσ. 31 Μαΐου 2016 i < emp.length Αν έχεις δηλώσει τον πίνακα 4 θέσεις , αυτο το μέρος του κώδικα δεν πρέπει να ειναι ? : (Υποθέτεται αν είναι 4 δεν το πιάσει .. γιατί του λες μικρότερο του 4) i<=emp.length Αυτή είναι η δικιά μου εκδοχή για το θέμα οτι αποθηκεύει 3 και οχι 4 . Τώρα για το θέμα που λες next() και nextLine() κοιτα το παρακάτω: http://stackoverflow.com/questions/22458575/whats-the-difference-between-next-and-nextline-methods-from-scanner-class Το nextLine() απο τι κατάλαβα καλά γιατι δεν το εχω χρησιμοποιησει , διαβάζει αυτο που ειναι να διαβάζει και παει στην επόμενη γραμμη , εννοω το next() διαβάζει οτι προέρχεται πριν το space (αν ειχαμε βαλει να διαχωριζει τα spaces "\\s") Φίλε μου ελπίζω να σε βοήθησα πάντως θα το ψάξω σε ενα βιβλίο που εχώ και θα σου πω σίγουρα γιατι ειμαι ερασιτέχνης και εγώ 2
bazinga13 Δημοσ. 1 Ιουνίου 2016 Μέλος Δημοσ. 1 Ιουνίου 2016 Σ ευχαριστω φιλε μου. Αυτο i<=emp.length Aν δηλωσω εναν πινακα 4 θεσεων με το παραπανω θα ειναι 5 και οχι 4 διοτι αρχιζει να μετραει απο το 0 i = 0; i < 4 i++
kaliakman Δημοσ. 1 Ιουνίου 2016 Δημοσ. 1 Ιουνίου 2016 Java δεν ξέρω αλλά έψαξα λίγο. Στην αρχή έχεις tmp = sc.nextInt(); Αυτό διαβάζει τον επόμενο integer και σταματάει. Όμως ο χρήστης έχει πατήσει και enter ("\n") που μένει στο buffer. Οπότε το πρώτο sc.nextLine() διάβαζει το \n και τα υπόλοιπα αυτό που θέλεις εσύ.Βάλε κάτω από το nextInt ένα nextLine(); να πάρει τα σκουπίδια και λογικά θα δουλέψει. 2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα