Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

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 αλλα δεν πολυ καταλαβα.

 

Σας ευχαριστω.

Δημοσ.
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")

 

 

Φίλε μου ελπίζω να σε βοήθησα πάντως θα το ψάξω σε ενα βιβλίο που εχώ και θα σου πω σίγουρα γιατι ειμαι ερασιτέχνης και εγώ :P 

  • Like 2
Δημοσ.

Σ ευχαριστω φιλε μου.

 

Αυτο

i<=emp.length

Aν δηλωσω εναν πινακα 4 θεσεων με το παραπανω θα ειναι 5 και οχι 4 διοτι αρχιζει να μετραει απο το 0

i = 0; i < 4 i++
Δημοσ.

Java δεν ξέρω αλλά έψαξα λίγο.

 

Στην αρχή έχεις

tmp = sc.nextInt();

Αυτό διαβάζει τον επόμενο integer και σταματάει. Όμως ο χρήστης έχει πατήσει και enter ("\n") που μένει στο buffer. Οπότε το πρώτο

sc.nextLine()

διάβαζει το \n και τα υπόλοιπα αυτό που θέλεις εσύ.Βάλε κάτω από το nextInt ένα nextLine(); να πάρει τα σκουπίδια και λογικά θα δουλέψει.

  • Like 2

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...