JAVA

Scanner Validazione Input Numerico

Validazione dell’input numerico in Java con Scanner: controllo dei dati inseriti, gestione degli errori e costruzione di input robusti per applicazioni console.

Durata

150 minuti

Software

Java JDK, Browser, onlinegdb.com

Validazione dell’input numerico in Java

Quando un programma riceve dati dall’utente, non può dare per scontato che siano corretti. La validazione dell’input serve a controllare i dati prima di utilizzarli, evitando errori e comportamenti imprevisti.

Problema senza validazione

Se l’utente inserisce un valore non numerico, il programma genera un errore di esecuzione (InputMismatchException).

Scanner input = new Scanner(System.in);

System.out.print("Inserisci un numero: ");
int n = input.nextInt(); // rischio errore

Soluzione: controllo con hasNextInt()

Il metodo hasNextInt() verifica se il valore inserito è un numero intero valido prima della lettura.

Scanner input = new Scanner(System.in);

System.out.print("Inserisci un numero intero: ");

if(input.hasNextInt()){
    int n = input.nextInt();
    System.out.println("Valore valido: " + n);
} else {
    System.out.println("Errore: valore non numerico");
}

Validazione con ciclo (approccio robusto)

Per garantire un input corretto si utilizza un ciclo che richiede nuovamente il valore fino a quando non è valido.

Scanner input = new Scanner(System.in);

int n;

System.out.print("Inserisci un numero intero: ");

while(!input.hasNextInt()){
    System.out.println("Errore: inserire un numero intero valido");
    input.next(); // scarta input errato
}

n = input.nextInt();

System.out.println("Numero accettato: " + n);

Validazione dei numeri decimali

Per i numeri decimali si utilizza hasNextDouble().

System.out.print("Inserisci un numero decimale: ");

while(!input.hasNextDouble()){
    System.out.println("Errore: inserire un numero decimale valido");
    input.next();
}

double valore = input.nextDouble();

System.out.println("Valore accettato: " + valore);

Tabella dei principali controlli

MetodoControlloTipo
hasNextInt()Numero interoint
hasNextDouble()Numero decimaledouble
hasNext()Token genericoString
hasNextLine()Intera rigaString

Concetto chiave

  • Scanner legge i dati
  • hasNext controlla i dati prima della lettura
  • Il ciclo garantisce input valido
  • Il programma diventa robusto e stabile
LABORATORIO

Validazione dell’input numerico

Costruzione di programmi robusti con controllo degli errori


1 Input sicuro (intero)

Creare un programma che richiede un numero intero e continua a chiederlo finché non è valido.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int n;

        System.out.print("Inserisci un numero intero: ");

        while(!input.hasNextInt()){
            System.out.println("Valore non valido, riprova:");
            input.next();
        }

        n = input.nextInt();

        System.out.println("Numero valido: " + n);

        input.close();
    }
}

2 Input sicuro (decimale)

Adattare il programma per i numeri decimali.

while(!input.hasNextDouble()){
    System.out.println("Errore: inserire un numero decimale");
    input.next();
}

double valore = input.nextDouble();

3 Applicazione reale

Simulare un sistema di acquisto con controlli:

  • Prezzo (double valido)
  • Quantità (int valido)
  • Calcolo totale
double totale = prezzo * quantita;

4 Esercizio avanzato

  • Creare un menu numerico
  • Validare la scelta dell’utente
  • Ripetere fino a scelta corretta





Java, Scanner, Validazione, Input, hasNextInt, hasNextDouble, Programmazione,