Convalida dell'input dell'utente
Gestisca con eleganza gli input non validi
Convalida dell'input dell'utente è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
Non si fidi mai dell'input
Gli utenti inseriscono dati errati: lettere al posto dei numeri, valori vuoti o valori fuori intervallo. I programmi robusti convalidano l'input e chiedono di nuovo il valore invece di arrestarsi con un errore.
Questa lezione mostra modelli di convalida gestita correttamente con Scanner.
Controllare prima di leggere
La protezione più semplice è hasNextInt(). Legga l'intero solo quando è effettivamente disponibile.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42");
if (scanner.hasNextInt()) {
System.out.println("Got: " + scanner.nextInt());
} else {
System.out.println("Please enter a number");
}
scanner.close();
}
}Ripetere finché il valore non è valido
Un ciclo di ritentativo continua a chiedere un valore finché non arriva un intero valido. Quando il token è errato, lo scarti con next() e continui.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc xyz 50");
int value = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
value = scanner.nextInt();
break;
}
scanner.next();
}
System.out.println("Accepted: " + value);
scanner.close();
}
}Controllare l'intervallo
Oltre al tipo, spesso i valori devono rientrare in un determinato intervallo. Legga il numero, quindi lo verifichi prima di accettarlo.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("7");
int n = scanner.nextInt();
if (n >= 1 && n <= 10) {
System.out.println("Valid: " + n);
} else {
System.out.println("Out of range");
}
scanner.close();
}
}Try-catch durante il parsing
Un'alternativa consiste nel leggere un'intera riga e poi analizzarla, gestendo con NumberFormatException il testo non valido. In questo modo il buffer rimane semplice.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("notanumber");
String line = scanner.nextLine();
try {
int n = Integer.parseInt(line.trim());
System.out.println("Parsed: " + n);
} catch (NumberFormatException e) {
System.out.println("Invalid number: " + line);
}
scanner.close();
}
}Convalidare il testo non vuoto
Per l'input testuale, rifiuti i valori vuoti. isBlank() restituisce true per le stringhe vuote o composte solo da spazi bianchi.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(" ");
String name = scanner.nextLine();
if (name.isBlank()) {
System.out.println("Name cannot be empty");
} else {
System.out.println("Hello, " + name);
}
scanner.close();
}
}Convalidare una scelta
Per le scelte di un menu, verifichi che il valore sia una delle opzioni consentite prima di utilizzarlo.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("y");
String choice = scanner.next().toLowerCase();
if (choice.equals("y") || choice.equals("n")) {
System.out.println("You chose: " + choice);
} else {
System.out.println("Please enter y or n");
}
scanner.close();
}
}Un metodo di convalida riutilizzabile
Estragga la convalida in un metodo, in modo da riutilizzare la logica. In questo caso, un metodo verifica che un'età rientri in un intervallo ragionevole.
public class Main {
static boolean isValidAge(int age) {
return age >= 0 && age <= 120;
}
public static void main(String[] args) {
System.out.println(isValidAge(30));
System.out.println(isValidAge(-5));
}
}Combinare tipo e intervallo
La convalida reale combina spesso il controllo del tipo, il controllo dell'intervallo e un ciclo di ritentativo in un'unica routine robusta.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc 200 45");
int valid = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
int n = scanner.nextInt();
if (n >= 1 && n <= 100) {
valid = n;
break;
}
} else {
scanner.next();
}
}
System.out.println("Final: " + valid);
scanner.close();
}
}Messaggi di errore chiari
Una buona convalida fornisce anche un feedback utile all'utente. Indichi esattamente cosa non andava e cosa è previsto, invece di mostrare un errore generico.
public class Main {
static String validate(String input) {
if (input.isBlank()) return "Input is empty";
if (!input.matches("\\d+")) return "Only digits allowed";
return "OK";
}
public static void main(String[] args) {
System.out.println(validate(""));
System.out.println(validate("12a"));
System.out.println(validate("123"));
}
}Strategia di convalida
Controlli il tipo con la famiglia hasNext o con try-catch, verifichi l'intervallo e che il testo non sia vuoto, ripeta l'operazione finché il valore non è valido e spieghi sempre chiaramente gli errori.
Verifica rapida
Verifichi le Sue conoscenze sulla convalida dell'input.
Riepilogo
Ha imparato a convalidare l'input in modo corretto:
- Protegga la lettura con
hasNextIntoppure analizzi il valore all'interno di un try-catch - Utilizzi cicli di ritentativo, scartando i token errati con
next() - Controlli gli intervalli e rifiuti il testo vuoto con
isBlank - Estragga metodi di convalida riutilizzabili
- Fornisca messaggi di errore chiari e specifici
Domande Frequenti
La lezione «Convalida dell'input dell'utente» è gratuita?
Sì — il testo completo di «Convalida dell'input dell'utente» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «Convalida dell'input dell'utente»?
Gestisca con eleganza gli input non validi Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Convalida dell'input dell'utente»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Lettura dell'input con Scanner
- Lettura di numeri e righe
- Convalida dell'input dell'utente
- Alternativa con BufferedReader