Bei der Entwicklung von Java-Anwendungen ist die Validierung von Benutzereingaben eine entscheidende Aufgabe. Dieses Lab demonstriert drei gängige Methoden, um zu überprüfen, ob eine gegebene Eingabe eine gültige Ganzzahl ist:
Verwendung der Methode Integer.parseInt()
Verwendung der Methode Scanner.hasNextInt()
Verwendung der Methode Character.isDigit()
Wir werden jede Methode Schritt für Schritt implementieren und ihre Unterschiede und Anwendungsfälle verstehen.
Interaktive Übungen statt trockener Theorie.
Einrichten des Java-Projekts
Lassen Sie uns eine neue Java-Datei erstellen, um unsere Methoden zur Ganzzahlvalidierung zu implementieren.
Öffnen Sie Ihr Terminal und stellen Sie sicher, dass Sie sich im Verzeichnis /home/labex/project befinden:
pwd
Erstellen Sie eine neue Java-Datei mit dem Namen CheckInputInteger.java:
touch CheckInputInteger.java
Öffnen Sie die Datei in Ihrem bevorzugten Texteditor und fügen Sie die grundlegende Klassenstruktur hinzu:
import java.util.Scanner;
public class CheckInputInteger {
public static void main(String[] args) {
// We will add our method calls here
}
}
Implementierung der Ganzzahlvalidierung mit Integer.parseInt()
Die Methode Integer.parseInt() versucht, eine Zeichenkette in eine Ganzzahl umzuwandeln. Wenn die Konvertierung fehlschlägt, wird eine NumberFormatException ausgelöst. Wir können dieses Verhalten verwenden, um Ganzzahlen zu validieren.
Fügen Sie die folgende Methode zu Ihrer Datei CheckInputInteger.java hinzu:
// Add this method inside the CheckInputInteger class
public static void checkUsingParseInt(String input) {
try {
// Attempt to parse the input string to an integer
Integer.parseInt(input);
System.out.println(input + " is a valid integer");
} catch (NumberFormatException e) {
// If parsing fails, the input is not a valid integer
System.out.println(input + " is not a valid integer");
}
}
Aktualisieren Sie die main-Methode, um diese Implementierung zu testen:
// Modify the main method to test this implementation
public static void main(String[] args) {
// Test cases
checkUsingParseInt("123"); // Valid integer
checkUsingParseInt("12.34"); // Not an integer
checkUsingParseInt("abc"); // Not an integer
}
Die Datei sollte so aussehen:
import java.util.Scanner;
public class CheckInputInteger {
// Define the method inside the class
public static void checkUsingParseInt(String input) {
try {
// Attempt to parse the input string to an integer
Integer.parseInt(input);
System.out.println(input + " is a valid integer");
} catch (NumberFormatException e) {
// If parsing fails, the input is not a valid integer
System.out.println(input + " is not a valid integer");
}
}
public static void main(String[] args) {
// Test cases
checkUsingParseInt("123"); // Valid integer
checkUsingParseInt("12.34"); // Not an integer
checkUsingParseInt("abc"); // Not an integer
}
}
123 is a valid integer
12.34 is not a valid integer
abc is not a valid integer
Mehr als nur ein Lerntext – erlebe es selbst.
Implementierung der Ganzzahlvalidierung mit Scanner.hasNextInt()
Die Klasse Scanner stellt die Methode hasNextInt() bereit, um zu überprüfen, ob das nächste Token in der Eingabe als Ganzzahl interpretiert werden kann. Diese Methode ist besonders nützlich, wenn Benutzereingaben von der Konsole gelesen werden.
Fügen Sie die folgende Methode zu Ihrer Datei CheckInputInteger.java innerhalb der Klasse CheckInputInteger hinzu:
public static void checkUsingScanner(String input) {
Scanner scanner = new Scanner(input);
if (scanner.hasNextInt()) {
System.out.println(input + " is a valid integer");
} else {
System.out.println(input + " is not a valid integer");
}
scanner.close();
}
Aktualisieren Sie die main-Methode, um Tests für diese Implementierung einzubeziehen:
public static void main(String[] args) {
// Previous test cases
checkUsingParseInt("123");
checkUsingParseInt("12.34");
checkUsingParseInt("abc");
// New test cases
checkUsingScanner("456"); // Valid integer
checkUsingScanner("-789"); // Valid integer
checkUsingScanner("12.34"); // Not an integer
}
456 is a valid integer
-789 is a valid integer
12.34 is not a valid integer
Dies zeigt, dass die Methode Scanner.hasNextInt() gültige und ungültige Ganzzahlen korrekt identifiziert.
Implementierung der Ganzzahlvalidierung mit Character.isDigit()
Die Methode Character.isDigit() prüft, ob ein Zeichen eine numerische Ziffer ist. Wir können dies verwenden, um Ganzzahlen zu validieren, indem wir jedes Zeichen in der Eingabezeichenkette überprüfen.
Fügen Sie die folgende Methode zu Ihrer Datei CheckInputInteger.java hinzu:
public static void checkUsingIsDigit(String input) {
boolean isValid = true;
// Handle negative numbers by checking first character
int startIndex = (input.charAt(0) == '-') ? 1 : 0;
// Check each character
for (int i = startIndex; i < input.length(); i++) {
if (!Character.isDigit(input.charAt(i))) {
isValid = false;
break;
}
}
if (isValid) {
System.out.println(input + " is a valid integer");
} else {
System.out.println(input + " is not a valid integer");
}
}
Aktualisieren Sie die main-Methode mit den finalen Testfällen:
public static void main(String[] args) {
// Previous test cases
checkUsingParseInt("123");
checkUsingParseInt("12.34");
checkUsingParseInt("abc");
checkUsingScanner("456");
checkUsingScanner("-789");
checkUsingScanner("12.34");
// New test cases
checkUsingIsDigit("789"); // Valid integer
checkUsingIsDigit("-123"); // Valid integer
checkUsingIsDigit("12.34"); // Not an integer
}
Kompilieren und führen Sie die finale Version Ihres Programms aus:
789 is a valid integer
-123 is a valid integer
12.34 is not a valid integer
Praxis statt nur Theorie.
Zusammenfassung
In diesem Lab haben wir drei verschiedene Methoden zur Validierung von Ganzzahleingaben in Java untersucht:
Die Methode Integer.parseInt(), die einfach ist, aber eine Ausnahmebehandlung (exception handling) erfordert
Die Methode Scanner.hasNextInt(), die sich hervorragend zum Lesen von Benutzereingaben eignet
Die Methode Character.isDigit(), die eine zeichenweise Validierung (character-by-character validation) bietet
Jede Methode hat ihre Vorteile und Anwendungsfälle. Die Methode parseInt() eignet sich gut für einfache String-zu-Ganzzahl-Konvertierungen, Scanner.hasNextInt() ist hervorragend zum Lesen von Benutzereingaben geeignet, und Character.isDigit() bietet die meiste Kontrolle über den Validierungsprozess.
Diese Validierungstechniken sind unerlässlich für die Entwicklung robuster Java-Anwendungen, die Benutzereingaben sicher und effektiv verarbeiten können.