Come ottenere input da un utente in Java (con immagini)

Sommario:

Come ottenere input da un utente in Java (con immagini)
Come ottenere input da un utente in Java (con immagini)

Video: Come ottenere input da un utente in Java (con immagini)

Video: Come ottenere input da un utente in Java (con immagini)
Video: Plague inc. #3 Tutorial Fungo BRUTALE 2024, Maggio
Anonim

Quando si programma in Java o in qualsiasi altro linguaggio, molto probabilmente sarà necessario utilizzare le informazioni di input di un utente. Java fornisce molti metodi diversi per ottenere informazioni sull'utente, ma il metodo più comune e forse più semplice da implementare è utilizzare l'oggetto Scanner.

Passi

Metodo 1 di 2: Video

1514756 1
1514756 1

Passaggio 1. Importa la classe Scanner

Puoi scegliere di importare il

java.util. Scanner

classe o l'intero

java.util

pacchetto. Per importare una classe o un pacchetto, aggiungi una delle seguenti righe all'inizio del codice:

    import java.util. Scanner; // Questo importerà solo la classe Scanner. import java.util.*; // Questo importerà l'intero pacchetto java.util.

1514756 2
1514756 2

Passaggio 2. Inizializzare un nuovo oggetto Scanner passando il tasto

Sistema.in

flusso di input al costruttore.

Sistema.in

è il flusso di input standard che è già aperto e pronto per fornire dati di input. In genere questo flusso corrisponde all'input da tastiera.

    Scanner userInputScanner = new Scanner(System.in);

1514756 3
1514756 3

Passaggio 3. Leggere i diversi tipi di dati di input inseriti dall'utente

La classe Scanner supporta l'acquisizione di primitive come int, byte, short, long oltre a ottenere stringhe.

  • Ecco alcuni metodi disponibili tramite la classe Scanner:

    • Leggi un byte -

      byte successivo()

    • Leggi un breve -

      successivoShort()

    • Leggi un int -

      nextInt()

    • Leggi a lungo -

      nextLong()

    • Leggi un galleggiante -

      nextFloat()

    • Leggi un doppio -

      successivoDouble()

    • Leggi un booleano -

      nextBoolean()

    • Leggi una riga completa -

      nextLine()

    • Leggi una parola -

      prossimo()

  • Ecco un esempio di un programma che utilizza diversi metodi della classe Scanner per ottenere diversi tipi di input:

      import java.util. Scanner; public class ScannerExample { public static void main(String args) { // Avvia un nuovo Scanner Scanner userInputScanner = new Scanner(System.in); // Test nextLine(); System.out.println("\nCome ti chiami? "); Nome stringa = userInputScanner.nextLine(); // Verifica nextInt(); System.out.print("Quanti gatti hai? "); int numeroOfCats = userInputScanner.nextInt(); // Test nextDouble(); System.out.print("Quanti soldi ci sono nel tuo portafoglio? $"); double moneyInWallet = userInputScanner.nextDouble(); System.out.println("\nHello " + name + "! Hai " + numberOfCats + (numberOfCats > 1 ? " cats": " cat") + " e $" + moneyInWallet + " nel tuo portafoglio.\n"); } }

Metodo 2 di 2: gestione delle eccezioni

1514756 4
1514756 4

Passaggio 1. Gestire le eccezioni di input

Un

InputMismatchException

viene generato quando l'utente immette dati che non corrispondono al tipo richiesto. Ad esempio, se l'utente immette una stringa quando viene richiesto un int, il programma genererà an

InputMismatchException

ed esci. Esistono diversi modi per gestire questa eccezione e risolvere questo problema in modo che il tuo programma possa essere infallibile.

1514756 5
1514756 5

Passaggio 2. Utilizzare un blocco try-catch per gestire il

InputMismatchException

.

    import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample { public static void main(String args) { // Avvia un nuovo Scanner Scanner userInputScanner = new Scanner(System.in); // Test nextLine(); System.out.print("\nCome ti chiami? "); Nome stringa = userInputScanner.nextLine(); // Test nextInt(); booleano validInput = false; int numeroDiGatti = 0; while (!validInput) { System.out.print("Quanti gatti hai? "); prova { numberOfCats = userInputScanner.nextInt(); validInput = vero; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } // Verifica nextDouble(); validInput = falso; double moneyInWallet = 0.0; while (!validInput) { System.out.print("Quanti soldi ci sono nel tuo portafoglio? $"); prova { moneyInWallet = userInputScanner.nextDouble(); userInputScanner.nextLine(); validInput = vero; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } System.out.println("\nHello " + name + "! Hai " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " e $" + moneyInWallet + " nel tuo portafoglio.\ n"); } }

  • Nota che dobbiamo importare

    java.util. InputMismatchException

    per utilizzare il

    InputMismatchException

  • classe.
  • Stiamo usando un ciclo while per porre all'utente la stessa domanda finché l'utente non inserisce l'input corretto.
  • Aggiunta

    userInputScanner.nextLine();

  • nella parte catch del try-catch assicura che lo scanner riconosca la pressione del tasto "invio" da parte dell'utente e funzioni come un modo per cancellare il buffer di input.
1514756 6
1514756 6

Passaggio 3. In alternativa, rendere infallibile l'input dell'utente prendendo solo le righe successive dallo scanner

In questo modo, possiamo assicurarci che tutto ciò che lo Scanner restituisce sia un oggetto String e non creerà alcuna eccezione. Quindi, per convertire le stringhe in interi o doppi, possiamo usare le classi Integer e Double wrapper.

    import java.util. Scanner; public class ScannerExample { public static void main(String args) { // Avvia un nuovo Scanner Scanner userInputScanner = new Scanner(System.in); // Test nextLine(); System.out.print("\nCome ti chiami? "); Nome stringa = userInputScanner.nextLine(); // Test nextInt(); booleano validInput = false; int numeroDiGatti = 0; while (!validInput) { System.out.print("Quanti gatti hai? "); Stringa input = userInputScanner.nextLine(); prova { numberOfCats = Integer.parseInt(input); validInput = vero; } catch (NumberFormatException e) { validInput = false; } } // Verifica nextDouble(); validInput = falso; double moneyInWallet = 0.0; while (!validInput) { System.out.print("Quanti soldi ci sono nel tuo portafoglio? $"); Stringa input = userInputScanner.nextLine(); prova { moneyInWallet = Double.parseDouble(input); validInput = vero; } catch (NumberFormatException e) { validInput = false; } } System.out.println("\nHello " + name + "! Hai " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " e $" + moneyInWallet + " nel tuo portafoglio.\ n"); } }

  • Nota che qui non abbiamo dovuto importare il

    NumberFormatException

  • class perché fa parte del pacchetto java.lang, il che significa che è integrato.
  • Inoltre, non abbiamo dovuto cancellare il buffer usando

    userInputScanner.nextLine();

  • nella parte di cattura del try-catch.

Suggerimenti

  • Consulta l'API Scanner per ulteriori informazioni sull'utilizzo della classe Scanner.
  • Usa sempre.next() invece di.nextLine() per leggere la parola successiva, poiché.nextLine() può essere bacato.

Consigliato: