java:console_read

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:console_read [2015/06/20 01:37]
gthanos [Διαβάζοντας από το System.in]
java:console_read [2015/06/20 02:38]
gthanos [Διαβάζοντας με χρήση της κλάσης Console]
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 =====
 +
 +Μπορείτε να διαβάσετε ή να γράψετε στην κονσόλα με την βοήθεια της κλάσης [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​Console.html|java.io.Console]]. Το παρακάτω παράδειγμα είναι από το site της Oracle και δείχνει την χρήση της κλάσης μέσω των μεθόδων **readLine** και **readPassword**.
 +
 +<code java Password.java>​
 +import java.io.Console;​
 +import java.util.Arrays;​
 +import java.io.IOException;​
 +
 +public class Password {
 +  ​
 +  public static void main (String args[]) throws IOException {
 +
 +    Console c = System.console();​
 +    if (c == null) {
 +      System.err.println("​No console."​);​
 +      System.exit(1);​
 +    }
 +
 +    String login = c.readLine("​Enter your login: ");
 +    char [] oldPassword = c.readPassword("​Enter your old password: ");
 +
 +    if (verify(login,​ oldPassword)) {
 +      boolean noMatch;
 +      do {
 +        char [] newPassword1 = c.readPassword("​Enter your new password: ");
 +        char [] newPassword2 = c.readPassword("​Enter new password again: ");
 +        noMatch = ! Arrays.equals(newPassword1,​ newPassword2);​
 +        if (noMatch) {
 +          c.format("​Passwords don't match. Try again.%n"​);​
 +        } else {
 +          change(login,​ newPassword1);​
 +          c.format("​Password for %s changed.%n",​ login);
 +        }
 +        Arrays.fill(newPassword1,​ ' ');
 +        Arrays.fill(newPassword2,​ ' ');
 +      } while (noMatch);
 +    }
 +
 +    Arrays.fill(oldPassword,​ ' ');
 +  }
 +  ​
 +  // Dummy change method.
 +  static boolean verify(String login, char[] password) {
 +    // This method always returns
 +    // true in this example.
 +    // Modify this method to verify
 +    // password according to your rules.
 +    return true;
 +  }
 +
 +  // Dummy change method.
 +  static void change(String login, char[] password) {
 +    // Modify this method to change
 +    // password according to your rules.
 +  }
 +}
 +</​code>​
  
  
java/console_read.txt · Last modified: 2016/02/26 11:15 (external edit)