This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
java:util_scanner_class [2020/03/05 12:30] gthanos [Παράδειγμα ανάγνωσης με χρήση της Scanner] |
java:util_scanner_class [2021/05/14 15:13] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Η κλάση Scanner ====== | ||
| - | Παρακάτω θα δούμε εναλλακτικούς τρόπους με τους οποίους μπορούμε να διαβάσουμε από ένα αρχείο κειμένου. Για τα παραδείγματα που ακολουθούν υποθέστε ότι καλούμαστε να διαβάσουμε το παρακάτω αρχείο που περιέχει τα ονόματα και τα τηλέφωνα ενός τηλεφωνικού καταλόγου. | ||
| - | |||
| - | <code txt telephone-list.txt> | ||
| - | John Smith 6944854544 | ||
| - | Robert Parson 6978456123 | ||
| - | Nick Carlson 6982147852 | ||
| - | Barbara Miller 6978852456 | ||
| - | Max Taylor 6936785412 | ||
| - | </ | ||
| - | |||
| - | Τα οποία θέλουμε να τα αποθηκεύσουμε σε ένα πίνακα από αντικείμενα της παρακάτω κλάσης TelephoneNumber | ||
| - | |||
| - | <code java TelephoneNumber.java> | ||
| - | |||
| - | public class TelephoneNumber { | ||
| - | private String name; | ||
| - | private long number; | ||
| - | | ||
| - | public TelephoneNumber(String newName, long newNumber) { | ||
| - | name = newName; | ||
| - | number = newNumber; | ||
| - | } | ||
| - | | ||
| - | public String getName() { return name; } | ||
| - | public long getNumber() { return number; } | ||
| - | public void setName(String newName) { name = newName; } | ||
| - | public void setNumber(long newNumber) { number = newNumber; } | ||
| - | | ||
| - | public String toString() { | ||
| - | return "Name: " | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Διαβάζοντας γραμμή-γραμμή ===== | ||
| - | |||
| - | Ό πιο απλός τρόπος ανάγνωσης αρχείων κειμένου είναι το διάβασμα κάθε γραμμής ξεχωριστά και στη συνέχει η επεξεργασία της γραμμής, | ||
| - | |||
| - | <code java ReadLineByLine.java> | ||
| - | import java.io.*; | ||
| - | |||
| - | public class ReadLineByLine { | ||
| - | public static void main(String []args) { | ||
| - | try { | ||
| - | String input, filename = " | ||
| - | 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(" | ||
| - | for(TelephoneNumber number : numbers) { | ||
| - | System.out.println(number); | ||
| - | } | ||
| - | } catch( IOException ex ) { | ||
| - | ex.printStackTrace(); | ||
| - | } | ||
| - | } | ||
| - | | ||
| - | public static TelephoneNumber createTelephoneNumber(String inputLine) { | ||
| - | String []tokens = inputLine.split(" | ||
| - | String name = tokens[0].trim() + " " + tokens[1].trim(); | ||
| - | long number = Long.parseLong(tokens[2].trim()); | ||
| - | TelephoneNumber t = new TelephoneNumber(name, | ||
| - | return t; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Χρησιμοποιώντας την κλάση Scanner ===== | ||
| - | |||
| - | Εκτός από την δυνατότητα που έχετε να διαβάζετε γραμμή-γραμμή η Java σας δίνει την επιπλέον δυνατότητα να διαβάζετε συγκεκριμένους τύπους δεδομένων μέσω της κλάσης [[http:// | ||
| - | |||
| - | Οι μέθοδοι της κλάσης //Scanner// έχουν συνοπτικά ως εξής: | ||
| - | |||
| - | **Κατασκευαστές** | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | Ένα αρχείο μπορείτε να το ανοίξετε είτε με χρήση της κλάσης File που είδαμε νωρίτερα είτε με χρήση της κλάσης [[http:// | ||
| - | |||
| - | **Μέθοδοι** | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | ==== Παράδειγμα ανάγνωσης με χρήση της Scanner ==== | ||
| - | |||
| - | <code java ReadWithScanner.java> | ||
| - | import java.util.*; | ||
| - | import java.io.*; | ||
| - | |||
| - | public class ReadWithScanner { | ||
| - | public static void main(String []args) { | ||
| - | String firstname, lastname; | ||
| - | String filename = " | ||
| - | long number; | ||
| - | int i=0; | ||
| - | TelephoneNumber numbers[] = new TelephoneNumber[5]; | ||
| - | try { | ||
| - | Scanner sc = new Scanner(new File(filename)); | ||
| - | | ||
| - | while( sc.hasNext() ) { | ||
| - | firstname = sc.next(); | ||
| - | lastname = sc.next(); | ||
| - | number = sc.nextLong(); | ||
| - | |||
| - | numbers[i++] = new TelephoneNumber(firstname+" | ||
| - | } | ||
| - | } catch(InputMismatchException ex) { | ||
| - | System.out.println(" | ||
| - | } catch(FileNotFoundException ex) { | ||
| - | System.out.println(" | ||
| - | } | ||
| - | | ||
| - | for(TelephoneNumber telephoneNumber : numbers) { | ||
| - | System.out.println(telephoneNumber); | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | <WRAP tip 80% center round> | ||
| - | Το παραπάνω παράδειγμα θα μπορούσατε να το εκτελέσετε διαβάζοντας από την κονσόλα, | ||
| - | <code java> | ||
| - | Scanner sc = new Scanner(new File(" | ||
| - | </ | ||
| - | |||
| - | με την γραμμή | ||
| - | |||
| - | <code java> | ||
| - | Scanner sc = new Scanner(System.in); | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | |||
| - | | Προηγούμενο: | ||