Τυπικά προγράμματα εργάζονται με δεδομένα που πρέπει να εισαχθούν και να εξάγονται από τον χρήστη. Σε αυτό το tutorial θα εξερευνήσουμε πώς μπορείς να επεξεργαστείς Java εισόδους από τον χρήστη και να διαμορφώσεις τις εξόδους αποτελεσματικά. Υπάρχουν διάφοροι τρόποι για τη συλλογή ή τη διάθεση πληροφοριών. Σε αυτό το πλαίσιο, η διάκριση μεταξύ εξόδων στην κονσόλα και σφαλμάτων παίζει σημαντικό ρόλο. Θα μάθεις επίσης πώς να διαβάζεις δεδομένα αποτελεσματικά, είτε μέσω της κονσόλας είτε μέσω γραφικών διεπαφών χρηστών.
Βασικές γνώσεις
- Η Java προσφέρει αρκετές μεθόδους για τη διαχείριση της εισαγωγής και εξαγωγής δεδομένων.
- Είναι σημαντικό να διαχωρίζεις τις εξόδους και τα σφάλματα μεταξύ τους.
- Ο Scanner είναι ένα χρήσιμο εργαλείο για την ανάγνωση εισόδων χρηστών.
Βασική έξοδος με System.out
Το πρώτο βήμα κατά τη δουλειά με εξόδους στην Java είναι η διαχείριση του System.out, ο οποίος αντιπροσωπεύει την προεπιλεγμένη έξοδο. Με την κλάση PrintStream, που αντιπροσωπεύει το System.out, μπορείς να στείλεις εξόδους στην κονσόλα.
Για να παραγάγεις μια έξοδο κειμένου, μπορείς απλά να χρησιμοποιήσεις το System.out.print ή το System.out.println. Το println τελειώνει την γραμμή μετά την έξοδο, ενώ το print δεν το κάνει. Έτσι, αν θέλεις η επόμενη έξοδος να γίνει στην ίδια γραμμή, χρησιμοποιείς το print.

Μπορείς να εκτελέσεις το πρόγραμμα ως εξής:
Αυτή η έξοδος θα εμφανιστεί στην κονσόλα και μπορείς να προσαρμόσεις το πρόγραμμα για να εξάγεις περισσότερες πληροφορίες.
Εξόδους σφαλμάτων με System.err
Για τις εξόδους σφαλμάτων συνιστάται η χρήση του System.err. Αυτό προσφέρει το πλεονέκτημα ότι τα σφάλματα και οι κανονικές έξοδοι διαχωρίζονται σαφώς. Τα σφάλματα μπορούν να τονιστούν οπτικά, π.χ. με τη χρήση διαφορετικού χρώματος στην κονσόλα (συνήθως κόκκινο).
Αν προκύψει σφάλμα, μπορείς να εξάγεις ένα συγκεκριμένο σφάλμα με το System.err.print ή το System.err.println:

Εδώ είναι ένα παράδειγμα σφάλματος:
Με τον διαχωρισμό των κανονικών εξόδων και των μηνυμάτων σφαλμάτων, μπορείς να αυξήσεις την αναγνωσιμότητα και την κατανόηση των εξόδων στο πρόγραμμά σου.
Εισαγωγές με System.in και τον Scanner
Για να λάβεις εισαγωγές από τον χρήστη, χρησιμοποιούμε το System.in. Συνιστάται η χρήση της κλάσης Scanner από το πακέτο java.util. Ο Scanner απλοποιεί την ανάγνωση δεδομένων, καθώς αναγνωρίζει αυτόματα τους διάφορους τύπους δεδομένων και επιστρέφει την εισαγωγή ως String.
Πρώτα πρέπει να εισάγεις τον Scanner:

Μετά μπορείς να δημιουργήσεις μια εμφάνιση του Scanner και να περάσεις το System.in:
Τώρα έχεις τη δυνατότητα να διαβάσεις εισαγωγές στο πρόγραμμά σου.
Καταγραφή εισαγωγών χρηστών
Για να λάβεις δεδομένα από τον χρήστη, μπορείς να χρησιμοποιήσεις το nextLine(). Αυτό επιτρέπει την καταγραφή μιας πλήρους γραμμής ως String. Ένα τυπικό παράδειγμα θα ήταν η εισαγωγή της ηλικίας του χρήστη.
Εδώ είναι ένα παράδειγμα καταγραφής εισαγωγής χρήστη:

Σε αυτό το παράδειγμα, ο χρήστης καλείται να εισάγει την ηλικία του και το πρόγραμμα επιστρέφει την καταγεγραμμένη πληροφορία.
Αλληλεπιδράσεις χρηστών με γραφικούς διαλόγους
Αν θέλεις να χρησιμοποιήσεις μια γραφική διεπαφή χρήστη (GUI), μπορείς να χρησιμοποιήσεις την κλάση JOptionPane από το πακέτο javax.swing. Αυτό σου επιτρέπει να καταγράψεις εισαγωγές σε ένα τυπικό παράθυρο διαλόγου, το οποίο μπορεί να είναι πιο φιλικό προς τον χρήστη.

Αυτό δείχνει έναν γραφικό διάλογο όπου ο χρήστης μπορεί να εισαγάγει την ηλικία του.
Επικύρωση εισαγωγών χρηστών
Είναι σημαντικό να επικυρώνεις τις εισαγωγές που προέρχονται από τον χρήστη. Πρέπει να διασφαλίσεις ότι η ηλικία είναι πράγματι σε αποδεκτή μορφή, π.χ. ως ακέραιος. Για αυτό μπορείς να προσπαθήσεις να μετατρέψεις το String σε αριθμό και να εργαστείς με εξαιρέσεις.

Με την εφαρμογή αυτών των επικυρώσεων, προστατεύεις το πρόγραμμα σου από απροσδόκητες εισαγωγές.
Σύνοψη – Βελτιστοποίηση εισαγωγής και εξαγωγής στην Java
Τώρα έχεις μάθει τις βασικές έννοιες για την εισαγωγή και την εξαγωγή στην Java. Η διάκριση μεταξύ κανονικών εξόδων και σαφών μηνυμάτων σφαλμάτων είναι θεμελιώδης για τη διασφάλιση της διαφάνειας στην επικοινωνία του προγράμματος. Επιπλέον, η χρήση του Scanner και η δυνατότητα εφαρμογής γραφικών διαλόγων προσφέρει ευέλικτες λύσεις για την εισαγωγή δεδομένων.
Συχνές ερωτήσεις
Ποια κλάση χρησιμοποιώ για την προεπιλεγμένη έξοδο;Χρησιμοποιείς το System.out για να εμφανίσεις εξόδους στο παράθυρο της κονσόλας.
Πώς μπορώ να εξάγω μηνύματα σφαλμάτων;Χρησιμοποιείς το System.err για την έξοδο μηνυμάτων σφαλμάτων, ώστε να τα διαχωρίσεις από τις κανονικές εξόδους.
Πώς καταγράφω εισαγωγές χρηστών στην κονσόλα;Ο Scanner από το java.util είναι ιδανικός για να καταγράψεις εισαγωγές χρηστών από το System.in.
Μπορώ να χρησιμοποιήσω γραφικούς διαλόγους εισαγωγής;Ναι, με το JOptionPane από το javax.swing μπορείς να χρησιμοποιήσεις γραφικούς διαλόγους για την εισαγωγή.
Πρέπει να επικυρώνω τις εισαγωγές χρηστών;Ναι, η επικύρωση των εισαγωγών είναι σημαντική για να αποφύγεις σφάλματα και απροσδόκητες εισαγωγές.