Prüfen, ob eine Eingabe eine Ganzzahl ist

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

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:

  1. Verwendung der Methode Integer.parseInt()
  2. Verwendung der Methode Scanner.hasNextInt()
  3. Verwendung der Methode Character.isDigit()

Wir werden jede Methode Schritt für Schritt implementieren und ihre Unterschiede und Anwendungsfälle verstehen.

Einrichten des Java-Projekts

Lassen Sie uns eine neue Java-Datei erstellen, um unsere Methoden zur Ganzzahlvalidierung zu implementieren.

  1. Öffnen Sie Ihr Terminal und stellen Sie sicher, dass Sie sich im Verzeichnis /home/labex/project befinden:
pwd
  1. Erstellen Sie eine neue Java-Datei mit dem Namen CheckInputInteger.java:
touch CheckInputInteger.java
  1. Ö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
    }
}
Screenshot of the basic Java class structure in the editor

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.

  1. 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");
    }
}
  1. 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
}
  1. 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
    }
}
  1. Kompilieren und führen Sie Ihr Programm aus:
javac CheckInputInteger.java
java CheckInputInteger

Sie sollten die folgende Ausgabe sehen:

123 is a valid integer
12.34 is not a valid integer
abc is not a valid integer
Output of the Java program showing integer validation results

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.

  1. 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();
}
  1. 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
}
  1. Kompilieren und führen Sie Ihr Programm aus:
javac CheckInputInteger.java
java CheckInputInteger

Sie sollten die folgende Ausgabe sehen:

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.

Output of the program showing integer validation results

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.

  1. 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");
    }
}
  1. 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
}
  1. Kompilieren und führen Sie die finale Version Ihres Programms aus:
javac CheckInputInteger.java
java CheckInputInteger

Sie sollten die folgende Ausgabe sehen:

789 is a valid integer
-123 is a valid integer
12.34 is not a valid integer
Output of the Java program showing integer validation results

Zusammenfassung

In diesem Lab haben wir drei verschiedene Methoden zur Validierung von Ganzzahleingaben in Java untersucht:

  1. Die Methode Integer.parseInt(), die einfach ist, aber eine Ausnahmebehandlung (exception handling) erfordert
  2. Die Methode Scanner.hasNextInt(), die sich hervorragend zum Lesen von Benutzereingaben eignet
  3. 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.