This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
java:console_read [2015/06/19 17:29] gthanos [Διαβάζοντας από το System.in] |
java:console_read [2015/06/20 02:31] gthanos [Διαβάζοντας με χρήση της κλάσης Console] |
||
---|---|---|---|
Line 7: | Line 7: | ||
===== Διαβάζοντας από το System.in ===== | ===== Διαβάζοντας από το System.in ===== | ||
- | To **System.in** είναι ένα stream τύπου byte-stream. Συνήθως από την κονσόλα θέλουμε να διαβάσουμε χαρακτήρες, για τον λόγο αυτό συνήθως απαιτείται να το μετατρέξουμε σε character stream ως εξής: | + | To **System.in** είναι ένα stream τύπου byte-stream. Συνήθως από την κονσόλα θέλουμε να διαβάσουμε χαρακτήρες. Στις περιπτώσεις αυτές απαιτείται να το μετατρέψουμε σε character stream ως εξής: |
<code java> | <code java> | ||
Line 13: | Line 13: | ||
</code> | </code> | ||
- | Για την διευκόλυνση σας μπορείτε να δημιουργήσετε ένα BufferedReader προκειμένου να μπορείτε να διαβάζετε όπως στο παρακάτω παράδειγμα. | + | Τον παραπάνω κώδικα συνήθως τον εντάσσουμε μέσα σε ένα block try/catch, όπως παρακάτω |
+ | |||
+ | <code java> | ||
+ | try (InputStreamReader r = new InputStreamReader(System.in)) { | ||
+ | char []buf = new char[128]; | ||
+ | String word = null; | ||
+ | int len = 0; | ||
+ | System.out.print("Enter your input: "); | ||
+ | if((len = r.read(buf,0,128)) != -1) { | ||
+ | word = new String(buf); | ||
+ | word = word.substring(0, len-1); | ||
+ | System.out.println("Your input is: "+word); | ||
+ | } | ||
+ | else { | ||
+ | System.out.println("No input!"); | ||
+ | } | ||
+ | } catch (IOException ex) { | ||
+ | System.out.println("Unable to read from STDIN"); | ||
+ | System.exit(1); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Για την διευκόλυνση σας, κατά την ανάγνωση μπορείτε να δημιουργήσετε ένα αντικείμενο της κλάσης java.io.BufferedReader, όπως παρακάτω. Το πλεονέκτημα της συγκεκριμένης επιλογής είναι ότι η κλάση BufferedReader σας δίνει την δυνατότητα να διαβάσετε απευθείας μία γραμμή από το stream μέσω της μεθόδου readLine, την οποία επιστρέφει ως String. | ||
<code java> | <code java> | ||
try (BufferedReader r = new BufferedReader(new InputStreamReader(System.in)) ) { | try (BufferedReader r = new BufferedReader(new InputStreamReader(System.in)) ) { | ||
- | | + | String word = null; |
+ | System.out.print("Enter your input: "); | ||
+ | if( (word=r.readLine()) != null) { | ||
+ | System.out.println("Your input is: "+word); | ||
+ | } | ||
+ | else { | ||
+ | System.out.println("No input!"); | ||
+ | } | ||
}catch (IOException ex) { | }catch (IOException ex) { | ||
System.out.println("Unable to read from STDIN"); | System.out.println("Unable to read from STDIN"); | ||
Line 24: | Line 53: | ||
</code> | </code> | ||
+ | <WRAP info 80% center round> | ||
+ | Σε όλες τις περιπτώσεις που ανοίγετε ένα stream υποχρεούστε να ελέγχετε για πιθανή δημιουργία IOException κατά το άνοιγμα του stream. Ο compiler της Java θα εμφανίσει λάθος σε περίπτωση που δεν το κάνετε. | ||
+ | </WRAP> | ||
===== Διαβάζοντας με χρήση της κλάσης Console ===== | ===== Διαβάζοντας με χρήση της κλάσης Console ===== | ||
+ | |||
+ | Μπορείτε να διαβάσετε ή να γράψετε | ||