Validér brugerinput
Håndtér ugyldigt input på en robust måde
Validér brugerinput er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.
Stol aldrig på inddata
Brugere indtaster forkerte ting: bogstaver, hvor der forventes tal, tomme felter eller værdier uden for intervallet. Robuste programmer validerer inddata og spørger igen i stedet for at gå ned.
Denne lektion viser mønstre til elegant validering med Scanner.
Kontrollér før læsning
Den enkleste beskyttelse er hasNextInt(). Læs kun heltallet, når der faktisk er et tilgængeligt heltal.
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();
}
}Gentag, indtil værdien er gyldig
En løkke med nye forsøg bliver ved med at spørge, indtil der kommer et gyldigt heltal. Når tokenet er forkert, skal du kassere det med next() og fortsætte.
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();
}
}Kontrol af interval
Ud over typen skal værdier ofte ligge inden for et bestemt interval. Læs tallet, og kontrollér det derefter, før du accepterer det.
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 ved parsing
Et alternativ er at læse en hel linje og derefter parse den, mens du fanger NumberFormatException for ugyldig tekst. Det holder bufferen enkel.
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();
}
}Validering af ikke-tom tekst
Afvis tom tekst. isBlank() returnerer true for tomme strenge eller strenge, der kun består af blanktegn.
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();
}
}Validering af et valg
Ved menuvalg skal du kontrollere, at værdien er en af de tilladte muligheder, før du handler på den.
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();
}
}En genanvendelig validator-metode
Udtræk valideringen til en metode, så logikken kan genbruges. Her kontrollerer en metode, at en alder ligger inden for et fornuftigt interval.
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));
}
}Kombination af type og interval
Virkelig validering kombinerer ofte et typetjek, et intervaltjek og en løkke med nye forsøg i én robust rutine.
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();
}
}Tydelige fejlmeddelelser
God validering giver også brugeren nyttig feedback. Fortæl præcis, hvad der var forkert, og hvad der forventes, i stedet for blot at angive en generel fejl.
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"));
}
}Valideringsstrategi
Kontrollér typen med familien af hasNext-metoder eller med try-catch, kontrollér interval og tom tekst, gentag indtil værdien er gyldig, og forklar altid fejl tydeligt.
Hurtig kontrol
Afprøv din viden om validering af inddata.
Opsamling
Du har lært at validere inddata på en elegant måde:
- Beskyt læsningen med
hasNextInt, eller parse inden i try-catch - Brug løkker med nye forsøg, og kassér ugyldige tokens med
next() - Kontrollér intervaller, og afvis tom tekst med
isBlank - Udtræk genanvendelige validator-metoder
- Giv tydelige og specifikke fejlmeddelelser
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 104
- Lektioner
- 374
Ofte stillede spørgsmål
Er lektionen “Validér brugerinput” gratis?
Ja — hele teksten til “Validér brugerinput” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Validér brugerinput”?
Håndtér ugyldigt input på en robust måde Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Java Academy?
Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Validér brugerinput”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Java Academy-lektion?
Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Læs input med Scanner
- Læs tal og linjer
- Validér brugerinput
- BufferedReader som alternativ