java:util_scanner_class

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:util_scanner_class [2017/02/07 12:52]
gthanos [Παράδειγμα ανάγνωσης με χρήση της Scanner]
java:util_scanner_class [2021/04/04 17:20]
gthanos
Line 4: Line 4:
  
 <code txt telephone-list.txt> <code txt telephone-list.txt>
-John Smith6944854544 +John Smith 6944854544 
-Robert Parson6978456123 +Robert Parson 6978456123 
-Nick Carlson6982147852 +Nick Carlson 6982147852 
-Barbara Miller6978852456 +Barbara Miller 6978852456 
-Max Taylor6936785412+Max Taylor 6936785412
 </code> </code>
  
Line 14: Line 14:
  
 <code java TelephoneNumber.java> <code java TelephoneNumber.java>
 +
 public class TelephoneNumber { public class TelephoneNumber {
   private String name;   private String name;
-  private String number;+  private long number;
      
-  public TelephoneNumber(String newName, String newNumber) {+  public TelephoneNumber(String newName, long newNumber) {
     name = newName;     name = newName;
     number = newNumber;     number = newNumber;
Line 24: Line 25:
      
   public String getName() { return name; }   public String getName() { return name; }
-  public String getNumber() { return number; }+  public long getNumber() { return number; }
   public void setName(String newName) { name = newName; }   public void setName(String newName) { name = newName; }
-  public void setNumber(String newNumber) { number = newNumber; }+  public void setNumber(long newNumber) { number = newNumber; }
      
   public String toString() {   public String toString() {
Line 34: Line 35:
 </code> </code>
  
-===== Διαβάζοντας γραμμή-γραμμή ===== +Η Java παρέχει την επιπλέον δυνατότητα να διαβάζετε συγκεκριμένους τύπους δεδομένων μέσω της κλάσης [[http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html|java.util.Scanner]]. Η κλάση Scanner επιτρέπει το διάβασμα από μία ροή χαρακτήρων γραμμή-γραμμή ή λέξη-λέξη. Όταν διαβάζετε λέξη-λέξη παρέχεται επιπλέον η δυνατότητα μετατροπής της πληροφορίας σε //primitive// τύπους δεδομένων όπως byte, short, int, longfloat, double κ.α.
- +
-Ό πιο απλός τρόπος ανάγνωσης αρχείων κειμένου είναι το διάβασμα κάθε γραμμής ξεχωριστά και στη συνέχει η επεξεργασία της γραμμής, ώστε να εξάγουμε τα αποτελέσματα που θέλουμε. Προκειμένου να επιτύχετε το διάβασμα ενός αρχείου γραμμή-γραμμή μπορείτε να το κάνετε με χρήση της κλάσης [[http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html|java.io.BufferedReader]], όπως φαίνεται παρακάτω: +
- +
-<code java ReadLineByLine.java> +
-import java.io.*; +
- +
-public class ReadLineByLine { +
-  public static void main(String []args) { +
-    try { +
-      String input; +
-      int i=0; +
-      TelephoneNumber [] numbers = new TelephoneNumber[5]; +
-      BufferedReader in = new BufferedReader(new FileReader("telephone-list.txt")); +
-      while( (input = in.readLine()) != null && input.length() > 0 ) { +
-        numbers[i++] = createTelephoneNumber(input); +
-      } +
-      System.out.println("-------- Telephone Numbers ---------"); +
-      for(TelephoneNumber number : numbers) { +
-        System.out.println(number); +
-      } +
-    } catch( IOException ex ) { +
-      ex.printStackTrace(); +
-    } +
-  } +
-   +
-  public static TelephoneNumber createTelephoneNumber(String inputLine) { +
-    int commaPosition = inputLine.indexOf(","); +
-    String name = inputLine.substring(0, commaPosition).trim(); +
-    String telephone = inputLine.substring( commaPosition+1 ).trim(); +
-    TelephoneNumber t = new TelephoneNumber(name, telephone); +
-    return t; +
-  } +
-+
-</code> +
- +
-===== Χρησιμοποιώντας την κλάση Scanner ===== +
- +
-Εκτός από την δυνατότητα που έχετε να διαβάζετε γραμμή-γραμμή η Java σας δίνει την επιπλέον δυνατότητα να διαβάζετε συγκεκριμένους τύπους δεδομένων μέσω της κλάσης [[http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html|java.util.Scanner]]. Η κλάση Scanner σας δίνει την δυνατότητα να διαβάζετε από ένα αρχείο ή από την κονσόλα τα δεδομένα σας είτε ως //primitive// τύπους δεδομένων (int, bytelong, double κλπ), είτε ως StringΕπίσης σας δίνει την δυνατότητα να διαβάσετε μία ολόκληρη γραμμή, όπως κάνατε και με χρήση της κλάσης [[http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html|java.io.BufferedReader]].+
  
 Οι μέθοδοι της κλάσης //Scanner// έχουν συνοπτικά ως εξής: Οι μέθοδοι της κλάσης //Scanner// έχουν συνοπτικά ως εξής:
Line 97: Line 60:
  
 <code java ReadWithScanner.java> <code java ReadWithScanner.java>
-import java.util.Scanner+import java.util.*
-import java.io.File;+import java.io.*;
  
 public class ReadWithScanner { public class ReadWithScanner {
   public static void main(String []args) {   public static void main(String []args) {
-    String firstname=null, lastname=null, number=null;+    String firstname, lastname
 +    String filename "telephone-list.txt"; 
 +    long number;
     int i=0;     int i=0;
     TelephoneNumber numbers[] = new TelephoneNumber[5];     TelephoneNumber numbers[] = new TelephoneNumber[5];
-    try +    try(Scanner sc = new Scanner(new File(filename))) {
-      Scanner sc = new Scanner(new File("telephone-list.txt"));+
              
       while( sc.hasNext() ) {               while( sc.hasNext() ) {        
         firstname = sc.next();         firstname = sc.next();
         lastname = sc.next();         lastname = sc.next();
-        number = sc.next(); +        number = sc.nextLong();
- +
-        if( lastname.charAt( lastname.length() -1 ) == ',' )  +
-          lastname = lastname.substring(0, lastname.length() -1);+
  
         numbers[i++] = new TelephoneNumber(firstname+" "+lastname, number);         numbers[i++] = new TelephoneNumber(firstname+" "+lastname, number);
       }       }
-    } catch(Exception ex) { +    } catch(InputMismatchException ex) { 
-      ex.printStackTrace();+      System.out.println("Invalid file contents!"); 
 +    } catch(FileNotFoundException ex) { 
 +      System.out.println("Unable to open '"+filename+"'");
     }     }
 +      
     for(TelephoneNumber telephoneNumber : numbers) {     for(TelephoneNumber telephoneNumber : numbers) {
       System.out.println(telephoneNumber);       System.out.println(telephoneNumber);
Line 131: Line 95:
 Το παραπάνω παράδειγμα θα μπορούσατε να το εκτελέσετε διαβάζοντας από την κονσόλα, αντί να διαβάζετε από αρχείο προκειμένου να διαβάσετε από την κονσόλα θα μπορούσατε να αντικαταστήσετε την γραμμή Το παραπάνω παράδειγμα θα μπορούσατε να το εκτελέσετε διαβάζοντας από την κονσόλα, αντί να διαβάζετε από αρχείο προκειμένου να διαβάσετε από την κονσόλα θα μπορούσατε να αντικαταστήσετε την γραμμή
 <code java> <code java>
-Scanner sc = new Scanner(new File("telephone-list.txt"));+Scanner sc = new Scanner(new File("telephone-list.txt"))
 </code> </code>
  
Line 137: Line 101:
  
 <code java> <code java>
-Scanner sc = new Scanner(System.in);+Scanner sc = new Scanner(System.in)
 </code> </code>
 </WRAP> </WRAP>
java/util_scanner_class.txt · Last modified: 2021/05/14 15:13 (external edit)