Testen von negativen und nicht-ganzzahligen Eingaben
In diesem Schritt werden wir unser Programm SquareRootChecker.java
mit negativen Zahlen testen und betrachten, was passiert, wenn der Benutzer etwas eingibt, das keine Ganzzahl ist.
In dem von uns geschriebenen Code haben wir eine Prüfung auf negative Zahlen eingebaut:
if (number < 0) {
System.out.println("Cannot calculate the square root of a negative number.");
}
Diese if
-Anweisung behandelt den Fall, dass der Benutzer eine negative Ganzzahl eingibt. Lassen Sie uns diesen Teil des Codes testen.
-
Stellen Sie sicher, dass Sie sich im Terminal im Verzeichnis ~/project
befinden.
-
Führen Sie das kompilierte Programm aus:
java SquareRootChecker
-
Wenn Sie dazu aufgefordert werden, geben Sie eine negative Zahl ein, beispielsweise -4
, und drücken Sie die Eingabetaste.
Enter an integer: -4
Cannot calculate the square root of a negative number.
Wie erwartet erkennt das Programm korrekt, dass es die Quadratwurzel einer negativen Zahl nicht berechnen kann, und gibt die entsprechende Meldung aus.
Jetzt betrachten wir, was passiert, wenn der Benutzer eine Eingabe macht, die keine Ganzzahl ist, wie z. B. Text oder eine Dezimalzahl. Unser Programm verwendet scanner.nextInt()
zum Lesen der Eingabe. Diese Methode ist so konzipiert, dass sie nur Ganzzahlen liest. Wenn der Benutzer etwas eingibt, das nicht als Ganzzahl interpretiert werden kann, tritt eine InputMismatchException
auf, und das Programm stürzt ab.
Das geschickte Behandeln solcher Fehler ist ein wichtiger Teil beim Schreiben robuster Programme. In diesem Einführungslabor werden wir keine vollständige Fehlerbehandlung für nicht-ganzzahlige Eingaben implementieren, aber es ist wichtig, sich bewusst zu sein, dass dies passieren kann. In zukünftigen Labs werden Sie Techniken wie try-catch
-Blöcke lernen, um Ausnahmen zu behandeln und Ihre Programme robuster gegenüber unerwarteten Benutzereingaben zu machen.
Lassen Sie uns zunächst nur beobachten, was passiert, wenn Sie eine nicht-ganzzahlige Eingabe machen.
-
Führen Sie das kompilierte Programm erneut aus:
java SquareRootChecker
-
Wenn Sie dazu aufgefordert werden, geben Sie etwas Text ein, beispielsweise hello
, und drücken Sie die Eingabetaste.
Enter an integer: hello
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at SquareRootChecker.main(SquareRootChecker.java:9)
Sie werden eine Fehlermeldung sehen, die auf eine InputMismatchException
hinweist. Dies liegt daran, dass scanner.nextInt()
eine Ganzzahl erwartet hat, aber "hello" erhalten hat.
Dieser Schritt hebt die Wichtigkeit hervor, verschiedene Arten von Benutzereingaben zu berücksichtigen und zu wissen, wie Ihr Programm sie behandeln wird. Obwohl unser aktuelles Programm einfach ist, ist das Verständnis dieser potenziellen Probleme für die Entwicklung komplexerer Anwendungen von entscheidender Bedeutung.