3.4 Η είσοδος χρήστη στην Java

Για να λάβετε είσοδο από τον χρήστη στην Java, μπορείτε να χρησιμοποιήσετε την κλάση Scanner, η οποία ανήκει στο πακέτο java.util.

Για να χρησιμοποιήσετε την κλάση Scanner, πρέπει να δημιουργήσετε ένα αντικείμενο της κλάσης. Μπορείτε να το κάνετε με την ακόλουθη εντολή:

Scanner scanner = new Scanner(System.in);

Αφού δημιουργήσετε το αντικείμενο Scanner, μπορείτε να χρησιμοποιήσετε διάφορες μεθόδους που παρέχει η κλάση για να λάβετε είσοδο από τον χρήστη. Οι πιο κοινές μέθοδοι είναι:

  • nextLine(): Διαβάζει μια γραμμή κειμένου από την είσοδο.
  • nextInt(): Διαβάζει έναν ακέραιο αριθμό από την είσοδο.
  • nextDouble(): Διαβάζει έναν δεκαδικό αριθμό από την είσοδο.

Αυτές είναι μερικές από τις διαθέσιμες μεθόδους που παρέχονται από την κλάση Scanner. Μπορείτε να δείτε περισσότερες λεπτομέρειες για την κλάση και τις μεθόδους της στην τεκμηρίωση της Java.

Στο παρακάτω παράδειγμα, θα χρησιμοποιήσουμε τη μέθοδο nextLine(), η οποία χρησιμοποιείται για την ανάγνωση συμβολοσειρών:

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    // Δημιουργία ενός αντικειμένου Scanner για λήψη εισόδου από το χρήστη
    Scanner myScanner = new Scanner(System.in);
    
    // Εμφάνιση μηνύματος προς το χρήστη για την εισαγωγή του ονόματος του
    System.out.println("Enter your name:");
    
    // Ανάγνωση του ονόματος από τον χρήστη
    String name = myScanner.nextLine();
    
    // Εμφάνιση μηνύματος καλωσορίσματος με το όνομα του χρήστη
    System.out.println("Hello " + name + "!");
  }
}

Ο παραπάνω κώδικας ζητά από τον χρήστη να εισάγει το όνομά του και στη συνέχεια το εμφανίζει με ένα μήνυμα καλωσορίσματος.

Ας αναλύσουμε τον κώδικα γραμμή προς γραμμή:

  1. Η γραμμή import java.util.Scanner; εισάγει την κλάση Scanner από το πακέτο java.util. Ο Scanner χρησιμοποιείται για την ανάγνωση εισόδου από το χρήστη.
  2. Η κλάση Main αρχίζει εδώ.
  3. Η μέθοδος main είναι η κύρια μέθοδος του προγράμματος. Έχει τον τύπο επιστροφής void, που σημαίνει ότι δεν επιστρέφει κάποια τιμή.
  4. Δημιουργείται ένα αντικείμενο Scanner με όνομα myScanner, το οποίο θα χρησιμοποιηθεί για να διαβάσει εισαγωγή από το χρήστη.
  5. Εμφανίζεται το μήνυμα "Enter your name:", ζητώντας από τον χρήστη να εισάγει το όνομά του.
  6. Η μέθοδος nextLine() του αντικειμένου myScanner διαβάζει μια γραμμή κειμένου που εισάγει ο χρήστης και την εκχωρεί στη μεταβλητή name τύπου String.
  7. Εμφανίζεται το μήνυμα "Hello " + name + "!, όπου name είναι το όνομα που εισήγαγε ο χρήστης. Έτσι, εμφανίζεται ένα μήνυμα καλωσορίσματος με το όνομα του χρήστη.

Αυτός είναι ο σκοπός του κώδικα, να ζητήσει το όνομα του χρήστη και να το εμφανίσει με ένα μήνυμα καλωσορίσματος.

Η κλάση Scanner μπορεί να χρησιμοποιηθεί για την ανάγνωση διαφόρων τύπων εισόδου χρήστη, όπως ακέραιους αριθμούς, δεκαδικούς αριθμούς, χαρακτήρες, κλπ.

Για παράδειγμα, η μέθοδος nextInt() χρησιμοποιείται για την ανάγνωση ακεραίων αριθμών, η μέθοδος nextDouble() χρησιμοποιείται για την ανάγνωση δεκαδικών αριθμών, κ.λπ. Παρακάτω παρατίθενται παραδείγματα χρήσης αυτών των μεθόδων:

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);
    
    // Ζητάμε από τον χρήστη να εισαγάγει έναν ακέραιο αριθμό
    System.out.println("Enter an integer:");
    int myInt = myScanner.nextInt();
    
    // Ζητάμε από τον χρήστη να εισαγάγει έναν δεκαδικό αριθμό
    System.out.println("Enter a double:");
    double myDouble = myScanner.nextDouble();
    
    // Ζητάμε από τον χρήστη να εισαγάγει έναν χαρακτήρα
    System.out.println("Enter a character:");
    char myChar = myScanner.next().charAt(0);
    
    // Εμφανίζουμε τις τιμές που εισήγαγε ο χρήστης
    System.out.println("Your inputs: " + myInt + ", " + myDouble + ", " + myChar);
  }
}

Ο παραπάνω κώδικας ζητά τρεις διαφορετικές τιμές από τον χρήστη: έναν ακέραιο αριθμό, έναν δεκαδικό αριθμό και έναν χαρακτήρα. Στη συνέχεια, εμφανίζει τις τιμές που εισήγαγε ο χρήστης.

Ας αναλύσουμε τον κώδικα γραμμή προς γραμμή:

  1. Η γραμμή import java.util.Scanner; εισάγει την κλάση Scanner από το πακέτο java.util. Ο Scanner χρησιμοποιείται για την ανάγνωση εισόδου από το χρήστη.
  2. Η κλάση Main αρχίζει εδώ.
  3. Η μέθοδος main είναι η κύρια μέθοδος του προγράμματος. Έχει τον τύπο επιστροφής void, που σημαίνει ότι δεν επιστρέφει κάποια τιμή.
  4. Δημιουργείται ένα αντικείμενο Scanner με όνομα myScanner, το οποίο θα χρησιμοποιηθεί για να διαβάσει εισαγωγή από το χρήστη.
  5. Εμφανίζεται το μήνυμα "Enter an integer:", ζητώντας από τον χρήστη να εισάγει έναν ακέραιο αριθμό.
  6. Η μέθοδος nextInt() του αντικειμένου myScanner διαβάζει έναν ακέραιο αριθμό που εισάγει ο χρήστης και τον εκχωρεί στη μεταβλητή myInt τύπου int.
  7. Εμφανίζεται το μήνυμα `”Enter a double:”`, ζητώντας από τον χρήστη να εισάγει έναν δεκαδικό αριθμό.
  1. Η μέθοδος nextDouble() του αντικειμένου myScanner διαβάζει έναν δεκαδικό αριθμό που εισάγει ο χρήστης και τον εκχωρεί στη μεταβλητή myDouble τύπου double.
  2. Εμφανίζεται το μήνυμα "Enter a character:", ζητώντας από τον χρήστη να εισάγει έναν χαρακτήρα.
  3. Η μέθοδος next() του αντικειμένου myScanner διαβάζει μια λέξη που εισάγει ο χρήστης και επιστρέφει τον πρώτο χαρακτήρα της λέξης. Με την charAt(0) επιλέγουμε τον πρώτο χαρακτήρα και τον εκχωρούμε στη μεταβλητή myChar τύπου char.
  4. Εμφανίζονται οι τιμές που εισήγαγε ο χρήστης με τη χρήση του τελεστή συνένωσης +. Οι τιμές εμφανίζονται ως μία συμβολοσειρά που περιέχει τον ακέραιο αριθμό, τον δεκαδικό αριθμό και τον χαρακτήρα, χρησιμοποιώντας τον τελεστή + για τη συνένωση των στοιχείων.

Έτσι, ο κώδικας ζητά τρεις τιμές από τον χρήστη και τις εμφανίζει στην οθόνη.

[adinserter block=”2″]

Είναι σημαντικό να σημειωθεί ότι η κλάση Scanner μπορεί να προκαλέσει εξαιρέσεις (exceptions), όταν δεν είναι δυνατό να γίνει η ανάγνωση της εισόδου χρήστη. Για παράδειγμα, αν ο χρήστης εισαγάγει μια συμβολοσειρά αντί για έναν ακέραιο αριθμό, η μέθοδος nextInt() θα προκαλέσει μια εξαίρεση.

Για να αντιμετωπίσετε τις εξαιρέσεις που μπορεί να προκαλέσει η κλάση Scanner, μπορείτε να χρησιμοποιήσετε τη δήλωση try-catch. Η δήλωση try-catch επιτρέπει στο πρόγραμμά σας να συνεχίσει να εκτελείται ακόμη και αν προκληθεί μια εξαίρεση.

Παρακάτω παρατίθεται ένα παράδειγμα χρήσης της δήλωσης try-catch για την αντιμετώπιση των εξαιρέσεων που προκαλούνται από την κλάση Scanner:

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    // Δημιουργία ενός αντικειμένου Scanner για λήψη εισόδου από το χρήστη
    Scanner myScanner = new Scanner(System.in);

    // Εμφάνιση μηνύματος προς το χρήστη για την εισαγωγή ενός ακεραίου
    System.out.println("Enter an integer:");

    try {
      // Διάβασμα ενός ακεραίου από τον χρήστη
      int myInt = myScanner.nextInt();

      // Εμφάνιση μηνύματος με τον ακέραιο που εισήγαγε ο χρήστης
      System.out.println("You entered " + myInt);
    } catch (Exception e) {
      // Εμφάνιση μηνύματος σε περίπτωση ανεπιτυχούς ανάγνωσης ακεραίου
      System.out.println("Invalid input!");
    }
  }
}

Ο παραπάνω κώδικας ζητά από τον χρήστη να εισάγει έναν ακέραιο αριθμό και στη συνέχεια τον εμφανίζει.

Ας αναλύσουμε τον κώδικα γραμμή προς γραμμή:

  1. Η γραμμή import java.util.Scanner; εισάγει την κλάση Scanner από το πακέτο java.util. Ο Scanner χρησιμοποιείται για την ανάγνωση εισόδου από το χρήστη.
  2. Η κλάση Main αρχίζει εδώ.
  3. Η μέθοδος main είναι η κύρια μέθοδος του προγράμματος. Έχει τον τύπο επιστροφής void, που σημαίνει ότι δεν επιστρέφει κάποια τιμή.
  4. Δημιουργείται ένα αντικείμενο Scanner με όνομα myScanner, το οποίο θα χρησιμοποιηθεί για να διαβάσει εισαγωγή από το χρήστη.
  5. Εμφανίζεται το μήνυμα "Enter an integer:", ζητώντας από τον χρήστη να εισάγει έναν ακέραιο αριθμό.
  6. Το πρόγραμμα προσπαθεί να διαβάσει έναν ακέραιο αριθμό που εισήγαγε ο χρήστης χρησιμοποιώντας τη μέθοδο nextInt() του αντικειμένου myScanner. Ο ακέραιος αποθηκεύεται στη μεταβλητή myInt.
  7. Εμφανίζεται το μήνυμα "You entered " + myInt, όπου myInt είναι ο ακέραιος αριθμός που εισήγαγε ο χρήστης. Έτσι, εμφανίζεται τον ακέραιο αριθμό που εισήγαγε ο χρήστης.
  1. Αν συμβεί οποιοδήποτε σφάλμα κατά τη διάρκεια της ανάγνωσης του ακεραίου από τον χρήστη, τότε πιάνεται η εξαίρεση (Exception) και εμφανίζεται το μήνυμα "Invalid input!".

Συνολικά, ο κώδικας ζητά από τον χρήστη να εισάγει έναν ακέραιο αριθμό και τον εμφανίζει. Αν η είσοδος του χρήστη δεν είναι έγκυρη ακέραια τιμή, εμφανίζεται ένα μήνυμα λάθους.

Επιπλέον, είναι σημαντικό να θυμάστε ότι η κλάση Scanner χρησιμοποιεί πόρους συστήματος για την ανάγνωση εισόδου χρήστη. Για να αποφύγετε προβλήματα συστήματος, πρέπει να κλείνετε το αντικείμενο Scanner μετά τη χρήση του. Αυτό γίνεται με τη μέθοδο close():

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    // Δημιουργία ενός αντικειμένου Scanner για λήψη εισόδου από το χρήστη
    Scanner myScanner = new Scanner(System.in);
    
    // Εμφάνιση μηνύματος προς το χρήστη για την εισαγωγή μιας συμβολοσειράς
    System.out.println("Enter a string:");
    
    // Ανάγνωση μιας συμβολοσειράς από τον χρήστη
    String myString = myScanner.nextLine();
    
    // Εμφάνιση της εισαγόμενης συμβολοσειράς
    System.out.println("You entered: " + myString);
    
    // Κλείσιμο του αντικειμένου Scanner
    myScanner.close();
  }
}

Ο παραπάνω κώδικας ζητά από τον χρήστη να εισάγει μια συμβολοσειρά (κείμενο) και στη συνέχεια την εμφανίζει στην οθόνη.

Ας αναλύσουμε τον κώδικα γραμμή προς γραμμή:

  1. Η γραμμή import java.util.Scanner; εισάγει την κλάση Scanner από το πακέτο java.util. Ο Scanner χρησιμοποιείται για την ανάγνωση εισόδου από το χρήστη.
  2. Η κλάση Main αρχίζει εδώ.
  3. Η μέθοδος main είναι η κύρια μέθοδος του προγράμματος. Έχει τον τύπο επιστροφής void, που σημαίνει ότι δεν επιστρέφει κάποια τιμή.
  4. Δημιουργείται ένα αντικείμενο Scanner με όνομα myScanner, το οποίο θα χρησιμοποιηθεί για να διαβάσει εισαγωγή από το χρήστη.
  5. Εμφανίζεται το μήνυμα "Enter a string:", ζητώντας από τον χρήστη να εισάγει μια συμβολοσειρά.
  6. Η μέθοδος nextLine() του αντικειμένου myScanner διαβάζει μια γραμμή κειμένου που εισάγει ο χρήστης και την εκχωρεί στη μεταβλητή myString τύπου String.
  7. Εμφανίζεται το μήνυμα "You entered: " + myString, όπου myString είναι η συμβολοσειρά που εισήγαγε ο χρήστης. Έτσι, εμφανίζεται η συμβολοσειρά που εισήγαγε ο χρήστης.
  1. Η μέθοδος close() του αντικειμένου myScanner κλείνει τον ανοικτό πόρο του Scanner, δηλαδή το σύστημα ανάγνωσης εισόδου από το χρήστη.

Έτσι, ο κώδικας διαβάζει μια συμβολοσειρά από τον χρήστη και την εμφανίζει στην οθόνη.

Ένα παράδειγμα σφάλματος που μπορεί να προκληθεί από την κλάση Scanner είναι η εξαίρεση InputMismatchException. Αυτή η εξαίρεση προκαλείται όταν ο χρήστης εισαγάγει μια τιμή που δεν αντιστοιχεί στον τύπο δεδομένων που αναμένεται από την κλάση Scanner.

[adinserter block=”3″]

Παρακάτω παρατίθεται ένα παράδειγμα κώδικα που μπορεί να προκαλέσει την εξαίρεση InputMismatchException:

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    // Δημιουργία ενός αντικειμένου Scanner για λήψη εισόδου από το χρήστη
    Scanner myScanner = new Scanner(System.in);
    
    // Εμφάνιση μηνύματος προς το χρήστη για την εισαγωγή ενός ακεραίου αριθμού
    System.out.println("Enter an integer:");
    
    // Ανάγνωση ενός ακεραίου από τον χρήστη
    int myInt = myScanner.nextInt();
    
    // Εμφάνιση του ακεραίου που εισήγαγε ο χρήστης
    System.out.println("You entered " + myInt);
    
    // Κλείσιμο του αντικειμένου Scanner
    myScanner.close();
  }
}

Ο παραπάνω κώδικας ζητά από τον χρήστη να εισάγει έναν ακέραιο αριθμό και στη συνέχεια τον εμφανίζει.

Ας αναλύσουμε τον κώδικα γραμμή προς γραμμή:

  1. Η γραμμή import java.util.Scanner; εισάγει την κλάση Scanner από το πακέτο java.util. Ο Scanner χρησιμοποιείται για την ανάγνωση εισόδου από το χρήστη.
  2. Η κλάση Main αρχίζει εδώ.
  3. Η μέθοδος main είναι η κύρια μέθοδος του προγράμματος. Έχει τον τύπο επιστροφής void, που σημαίνει ότι δεν επιστρέφει κάποια τιμή.
  4. Δημιουργείται ένα αντικείμενο Scanner με όνομα myScanner, το οποίο θα χρησιμοποιηθεί για να διαβάσει εισαγωγή από το χρήστη.
  5. Εμφανίζεται το μήνυμα "Enter an integer:", ζητώντας από τον χρήστη να εισάγει έναν ακέραιο αριθμό.
  6. Η μέθοδος nextInt() του αντικειμένου myScanner διαβάζει έναν ακέραιο αριθμό που εισάγει ο χρήστης και τον εκχωρεί στη μεταβλητή myInt τύπου int.
  7. Εμφανίζεται το μήνυμα "You entered " + myInt, όπου myInt είναι ο ακέραιος αριθμός που εισήγαγε ο χρήστης. Έτσι, εμφανίζεται ένα μήνυ

μα που δείχνει την είσοδο του χρήστη.

  1. Η μέθοδος close() κλείνει το αντικείμενο myScanner, απελευθερώνοντας τυχόν πόρους που χρησιμοποιήθηκαν από το Scanner.

Ο κώδικας ζητά από τον χρήστη να εισάγει έναν ακέραιο αριθμό και τον εμφανίζει στην οθόνη.

Για να αντιμετωπίσετε αυτή την εξαίρεση, μπορείτε να χρησιμοποιήσετε τη δήλωση try-catch, όπως αναφέρθηκε προηγουμένως.

Τύποι δεδομένων που μπορούμε να διαβάσουμε από την κλάση Scanner:

ΜέθοδοςΠεριγραφή
nextBoolean()Διαβάζει ένα boolean από τον χρήστη
nextByte()Διαβάζει ένα byte από τον χρήστη
nextDouble()Διαβάζει ένα double από τον χρήστη
nextFloat()Διαβάζει ένα float από τον χρήστη
nextInt()Διαβάζει ένα int από τον χρήστη
nextLine()Διαβάζει μια συμβολοσειρά από τον χρήστη
nextLong()Διαβάζει ένα long από τον χρήστη
nextShort()Διαβάζει ένα short από τον χρήστη

Παρακάτω παρατίθεται ένα παράδειγμα χρήσης διαφορετικών μεθόδων για την ανάγνωση δεδομένων διαφόρων τύπων από το χρήστη:

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out.println("Enter your name:");
    String name = myScanner.nextLine(); // Διάβασμα ονόματος από τον χρήστη

    System.out.println("Enter your age:");
    int age = myScanner.nextInt(); // Διάβασμα ηλικίας από τον χρήστη

    System.out.println("Enter your height (in meters):");
    double height = myScanner.nextDouble(); // Διάβασμα ύψους από τον χρήστη

    System.out.println("Enter your weight (in kilograms):");
    float weight = myScanner.nextFloat(); // Διάβασμα βάρους από τον χρήστη

    System.out.println("Name: " + name); // Εκτύπωση ονόματος
    System.out.println("Age: " + age); // Εκτύπωση ηλικίας
    System.out.println("Height: " + height); // Εκτύπωση ύψους
    System.out.println("Weight: " + weight); // Εκτύπωση βάρους

    myScanner.close(); // Κλείσιμο του Scanner για αποδέσμευση πόρων
  }
}

Ο παραπάνω κώδικας ζητά από τον χρήστη να εισάγει το όνομά του, την ηλικία του, το ύψος του και το βάρος του, και στη συνέχεια εκτυπώνει αυτές τις τιμές.

Συγκεκριμένα, ας δούμε τον κώδικα γραμμή προς γραμμή:

  1. Η γραμμή import java.util.Scanner; εισάγει την κλάση Scanner από το πακέτο java.util. Ο Scanner χρησιμοποιείται για την ανάγνωση εισόδου από το χρήστη.
  2. Η κλάση Main αρχίζει εδώ.
  3. Η μέθοδος main είναι η κύρια μέθοδος του προγράμματος.
  4. Δημιουργείται ένα αντικείμενο Scanner με όνομα myScanner, το οποίο θα χρησιμοποιηθεί για να διαβάσει εισαγωγή από το χρήστη.
  5. Εμφανίζεται το μήνυμα "Enter your name:", ζητώντας από τον χρήστη να εισάγει το όνομά του.
  6. Η μέθοδος nextLine() του αντικειμένου myScanner διαβάζει μια γραμμή κειμένου που εισάγει ο χρήστης και την εκχωρεί στη μεταβλητή name τύπου String.
  7. Εμφανίζεται το μήνυμα "Enter your age:", ζητώντας από τον χρήστη να εισάγει την ηλικία του.
  8. Η μέθοδος nextInt() του αντικειμένου myScanner διαβάζει έναν ακέραιο αριθμό που εισάγει ο χρήστης και τον εκχωρεί στη μεταβλητή age τύπου int.
  9. Εμφανίζεται το μήνυμα "Enter your height (in meters):", ζητώντας από τον χρήστη να εισάγει το ύψος του σε μέτρα.
  10. Η μέθοδος nextDouble() του αντικειμένου myScanner διαβάζει έναν δεκαδικό αριθμό που εισάγει ο χρήστης και τον εκχωρεί στη μεταβλητή height τύπου double.
  11. Εμφανίζεται το μήνυμα "Enter your weight (in kilograms):", ζητώντας από τον χρήστη να εισάγει το βάρος του σε κιλά.
  12. Η μέθοδος nextFloat() του αντικειμένου myScanner διαβάζει έναν δεκαδικό αριθμό που εισάγει ο χρήστης και τον εκχωρεί στη μεταβλητή weight τύπου float.
  13. Εμφανίζεται το μήνυμα "Name: " + name, εκτυπώνοντας το όνομα που εισήγαγε ο χρήστης.
  14. Εμφανίζεται το μήνυμα "Age: " + age, εκτυπώνοντας την ηλικία που εισήγαγε ο χρήστης.
  15. Εμφανίζεται το μήνυμα "Height: " + height, εκτυπώνοντας το ύψος που εισήγαγε ο χρήστης.
  16. Εμφανίζεται το μήνυμα "Weight: " + weight, εκτυπώνοντας το βάρος που εισήγαγε ο χρήστης.
  17. Η μέθοδος close() κλείνει το αντικείμενο myScanner, αποδεσμεύοντας τους πόρους που χρησιμοποιεί για την ανάγνωση εισόδου από το χρήστη.

Ο κώδικας αυτός εκτελεί τη λειτουργία της ανάγνωσης εισόδου από το χρήστη και της εμφάνισης των δεδομένων που εισήγαγε ο χρήστης στην οθόνη.

14 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων