Java in attesa di input

Siddharth Swami 12 ottobre 2023
Java in attesa di input

L’input dell’utente può fare riferimento a qualsiasi informazione o dato che un utente desidera che il compilatore elabori. Potremmo incontrare situazioni in cui vogliamo che il nostro programma metta in pausa la compilazione e attenda che l’utente inserisca un valore.

Per tali situazioni, possiamo usare la funzione nextLine().

In questo tutorial impareremo come fare in modo che Java attenda l’input dell’utente utilizzando il metodo nextLine().

La funzione nextLine() si trova nella classe java.util.Scanner in Java. Questa funzione viene utilizzata per spostarsi oltre la riga corrente e restituire un input.

Quindi, utilizzando questo metodo, il compilatore attende che l’utente immetta una stringa valida e riprenda la compilazione del programma. Questo metodo è applicabile solo al tipo di dati stringa.

Per esempio,

// Java program to illustrate the
// nextLine() method of Scanner class in Java

import java.util.Scanner;

public class Scanner_Class {
  public static void main(String[] args) {
    // create a new scanner
    // with the specified String Object
    Scanner scanner = new Scanner(System.in);
    String s = scanner.nextLine();
    // print the next line
    System.out.println("The line entered by the user: " + s);
    scanner.close();
  }
}

Ingresso:

Hello World.

Produzione:

The line entered by the user: Hello World.

Non è necessario attendere per verificare la disponibilità dell’input poiché Scanner.nextLine() si bloccherà automaticamente fino a quando non sarà disponibile una linea.

Il codice seguente lo spiega.

import java.util.Scanner;
public class Scanner_Test {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    try {
      while (true) {
        System.out.println("Please input a line");
        long then = System.currentTimeMillis();
        String line = scanner.nextLine();
        long now = System.currentTimeMillis();
        System.out.printf("Waited %.3fs for user input%n", (now - then) / 1000d);
        System.out.printf("User input was: %s%n", line);
      }
    } catch (IllegalStateException | NoSuchElementException e) {
      // System.in has been closed
      System.out.println("System.in was closed; exiting");
    }
  }
}

Produzione:

Please input a line
Hello World.
Waited 1.892s for user input
User input was: Hello World.
Please input a line
^D
System.in was closed; exiting

Nell’esempio sopra, abbiamo calcolato e mostrato il tempo in cui il compilatore ha atteso l’input utilizzando la funzione currentTimeMillis().

Questa funzione può restituire due eccezioni. L’IllegalStateException viene sollevata quando Scanner viene chiuso e la NoSuchElementException viene sollevata quando non viene trovata alcuna riga.

Articolo correlato - Java Input