User Tools

Site Tools


java:util_scanner_class

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:util_scanner_class [2020/03/09 21:08] – [Χρησιμοποιώντας την κλάση Scanner] gthanosjava:util_scanner_class [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 34: Line 34:
 } }
 </code> </code>
- 
-===== Διαβάζοντας γραμμή-γραμμή ===== 
- 
-Ό πιο απλός τρόπος ανάγνωσης αρχείων κειμένου είναι το διάβασμα κάθε γραμμής και στη συνέχεια η επεξεργασία της γραμμής, ώστε να εξάγουμε τα αποτελέσματα που θέλουμε, όπως φαίνεται παρακάτω: 
- 
-<code java ReadLineByLine.java> 
-import java.io.*; 
- 
-public class ReadLineByLine { 
-  public static void main(String []args) { 
-    try { 
-      String input, filename = "telephone-list.txt"; 
-      int i=0; 
-      TelephoneNumber [] numbers = new TelephoneNumber[5]; 
-      BufferedReader in = new BufferedReader(new FileReader(filename)); 
-      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) { 
-    String []tokens = inputLine.split("[\\s]+"); 
-    String name = tokens[0].trim() + " " + tokens[1].trim();  
-    long number = Long.parseLong(tokens[2].trim()); 
-    TelephoneNumber t = new TelephoneNumber(name, number); 
-    return t; 
-  } 
-} 
-</code> 
- 
-===== Χρησιμοποιώντας την κλάση Scanner ===== 
  
 Η Java παρέχει την επιπλέον δυνατότητα να διαβάζετε συγκεκριμένους τύπους δεδομένων μέσω της κλάσης [[http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html|java.util.Scanner]]. Η κλάση Scanner επιτρέπει το διάβασμα από μία ροή χαρακτήρων γραμμή-γραμμή ή λέξη-λέξη. Όταν διαβάζετε λέξη-λέξη παρέχεται επιπλέον η δυνατότητα μετατροπής της πληροφορίας σε //primitive// τύπους δεδομένων όπως byte, short, int, long, float, double κ.α. Η Java παρέχει την επιπλέον δυνατότητα να διαβάζετε συγκεκριμένους τύπους δεδομένων μέσω της κλάσης [[http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html|java.util.Scanner]]. Η κλάση Scanner επιτρέπει το διάβασμα από μία ροή χαρακτήρων γραμμή-γραμμή ή λέξη-λέξη. Όταν διαβάζετε λέξη-λέξη παρέχεται επιπλέον η δυνατότητα μετατροπής της πληροφορίας σε //primitive// τύπους δεδομένων όπως byte, short, int, long, float, double κ.α.
Line 97: Line 59:
 ==== Παράδειγμα ανάγνωσης με χρήση της Scanner ==== ==== Παράδειγμα ανάγνωσης με χρήση της Scanner ====
  
-<code java ReadWithScanner.java> +Το παρακάτω παράδειγμα διαβάζει από ένα αρχείο ένα σύνολο εγγραφών και δημιουργεί ένα πίνακα αντικειμένων τύπου TelephoneNumberΣτη συνέχεια εκτυπώνει τα περιεχόμενα του πίνακα στην κονσόλα
-import java.util.*; +
-import java.io.*;+
  
 +<code java ReadWithScanner.java>
 public class ReadWithScanner { public class ReadWithScanner {
   public static void main(String []args) {   public static void main(String []args) {
 +  
 +    TelephoneNumber[] numbers;
 +    numbers = readTelephoneNumbers("telephone-list.txt");
 +    printTelephoneNumbers(numbers);
 +  }
 +  
 +  public static void printTelephoneNumbers(TelephoneNumber[] numbers) {
 +    for(TelephoneNumber number : numbers) {
 +      System.out.println(number);
 +    }
 +  }
 +  
 +  public static TelephoneNumber[] readTelephoneNumbers(String filename) {
     String firstname, lastname;     String firstname, lastname;
-    String filename = "telephone-list.txt";+    
     long number;     long number;
     int i=0;     int i=0;
Line 117: Line 91:
         numbers[i++] = new TelephoneNumber(firstname+" "+lastname, number);         numbers[i++] = new TelephoneNumber(firstname+" "+lastname, number);
       }       }
 +      
     } catch(InputMismatchException ex) {     } catch(InputMismatchException ex) {
       System.out.println("Invalid file contents!");       System.out.println("Invalid file contents!");
Line 122: Line 97:
       System.out.println("Unable to open '"+filename+"'");       System.out.println("Unable to open '"+filename+"'");
     }     }
-       +     
-    for(TelephoneNumber telephoneNumber : numbers) { +    return numbers;
-      System.out.println(telephoneNumber); +
-    }+
   }   }
 +  
 } }
 </code> </code>
  
 <WRAP tip 80% center round> <WRAP tip 80% center round>
-Το παραπάνω παράδειγμα θα μπορούσατε να το εκτελέσετε διαβάζοντας από την κονσόλα, αντί να διαβάζετε από αρχείο προκειμένου να διαβάσετε από την κονσόλα θα μπορούσατε να αντικαταστήσετε την γραμμή+Το παραπάνω παράδειγμα θα μπορούσατε να το εκτελέσετε διαβάζοντας από το πληκτρολόγιο, αντί να διαβάζετε από αρχείο. Για να διαβάσετε από την κονσόλα θα μπορούσατε να αντικαταστήσετε τη γραμμή
 <code java> <code java>
 Scanner sc = new Scanner(new File("telephone-list.txt")) Scanner sc = new Scanner(new File("telephone-list.txt"))
Line 144: Line 118:
  
  
-| Προηγούμενο: [[:java:class_file | Η κλάση File ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:formatting | Μορφοποίηση Εξόδου ]] |+| Προηγούμενο: [[:java:class_file | Η κλάση File ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:formatting | Εγγραφή σε αρχεία κειμένου και μορφοποίηση εξόδου ]] |
java/util_scanner_class.1583788127.txt.gz · Last modified: 2020/03/09 21:08 (external edit)