Einführung
In diesem Lab lernen Sie, wie Sie in Java feststellen können, ob eine Zahl gerade oder ungerade ist. Wir werden die Verwendung des Modulo-Operators (%) untersuchen, um den Rest zu prüfen, wenn eine Zahl durch 2 geteilt wird. Dies ist das grundlegende Prinzip zur Identifizierung von geraden Zahlen.
Sie werden ein einfaches Java-Programm implementieren, um diese Prüfung durchzuführen, es sowohl mit positiven als auch negativen Ganzzahl-Eingaben testen und überlegen, wie Sie nicht-ganzzahlige Eingaben behandeln können, um Ihre Lösung robuster zu machen.
Verwenden des Modulo-Operators zur Prüfung auf Geradzahligkeit
In diesem Schritt lernen wir, wie man in Java mithilfe des Modulo-Operators feststellt, ob eine Zahl gerade oder ungerade ist. Der Modulo-Operator (%) gibt den Rest einer Division zurück. Beispielsweise ist 10 % 3 gleich 1, weil 10 geteilt durch 3 gleich 3 mit einem Rest von 1 ist.
Eine gerade Zahl ist jede ganze Zahl, die durch 2 ohne Rest teilbar ist. Das bedeutet, dass wenn Sie eine gerade Zahl durch 2 teilen, der Rest immer 0 ist. Wir können den Modulo-Operator verwenden, um diese Bedingung zu überprüfen.
Lassen Sie uns ein einfaches Java-Programm erstellen, um zu prüfen, ob eine Zahl gerade ist.
Öffnen Sie die Datei
EvenCheck.javaim WebIDE-Editor. Wenn die Datei nicht existiert, erstellen Sie sie im Verzeichnis~/project. Sie können dies tun, indem Sie mit der rechten Maustaste im Dateiexplorer links klicken, "Neue Datei" auswählen undEvenCheck.javaeingeben.Fügen Sie den folgenden Code in die Datei
EvenCheck.javaein:public class EvenCheck { public static void main(String[] args) { int number = 10; // Wir werden prüfen, ob diese Zahl gerade ist // Verwenden Sie den Modulo-Operator, um den Rest bei der Division durch 2 zu überprüfen if (number % 2 == 0) { System.out.println(number + " is an even number."); } else { System.out.println(number + " is an odd number."); } } }Schauen wir uns die neuen Teile an:
int number = 10;: Dies deklariert eine Ganzzahlvariable namensnumberund weist ihr den Wert 10 zu. Wir können diesen Wert ändern, um verschiedene Zahlen zu testen.if (number % 2 == 0): Dies ist eineif-Anweisung. Sie prüft, ob die Bedingung in den Klammern wahr ist. Die Bedingungnumber % 2 == 0prüft, ob der Rest vonnumbergeteilt durch 2 gleich 0 ist.System.out.println(number + " is an even number.");: Diese Zeile wird ausgeführt, wenn die Bedingung in derif-Anweisung wahr ist (die Zahl ist gerade).else: Dieses Schlüsselwort leitet den Codeblock ein, der ausgeführt wird, wenn die Bedingung in derif-Anweisung falsch ist (die Zahl ist ungerade).System.out.println(number + " is an odd number.");: Diese Zeile wird ausgeführt, wenn die Zahl ungerade ist.
Speichern Sie die Datei
EvenCheck.java(Strg+S oder Cmd+S).Jetzt kompilieren wir das Programm. Öffnen Sie das Terminal unten im WebIDE und stellen Sie sicher, dass Sie sich im Verzeichnis
~/projectbefinden. Führen Sie dann den folgenden Befehl aus:javac EvenCheck.javaWenn keine Fehler auftreten, wird eine Datei
EvenCheck.classerstellt.Führen Sie schließlich das kompilierte Programm aus:
java EvenCheckSie sollten die Ausgabe sehen, die angibt, ob die Zahl 10 gerade oder ungerade ist.
10 is an even number.
Jetzt versuchen Sie, den Wert der Variable number in der Datei EvenCheck.java in eine andere Ganzzahl zu ändern (z. B. 7, -5, 0) und wiederholen Sie Schritte 3, 4 und 5, um zu sehen, wie sich die Ausgabe ändert.
Testen mit positiven und negativen Zahlen
Im vorherigen Schritt haben wir erfolgreich geprüft, ob eine positive Ganzzahl gerade oder ungerade ist. Jetzt wollen wir untersuchen, wie der Modulo-Operator mit negativen Zahlen und Null funktioniert. Das Konzept von geraden und ungeraden Zahlen gilt für alle ganzen Zahlen, einschließlich negativer Zahlen und Null.
Eine ganze Zahl ist gerade, wenn sie durch 2 teilbar ist, d. h., der Rest ist 0. Diese Definition gilt auch für negative Zahlen. Beispielsweise ist -4 gerade, weil -4 geteilt durch 2 gleich -2 mit einem Rest von 0 ist. -3 ist ungerade, weil -3 geteilt durch 2 gleich -1 mit einem Rest von -1 (oder 1, je nach Definition des Modulos für negative Zahlen, aber das Wichtigste ist, dass es nicht 0 ist). Null wird ebenfalls als gerade Zahl betrachtet, weil 0 geteilt durch 2 gleich 0 mit einem Rest von 0 ist.
Lassen Sie uns unser EvenCheck.java-Programm ändern, um es mit verschiedenen positiven und negativen Zahlen sowie Null zu testen.
Öffnen Sie die Datei
EvenCheck.javaim WebIDE-Editor.Ändern Sie die
main-Methode, um mehrere verschiedene Zahlen zu testen. Sie können den Wert der Variablenumbermehrmals ändern oder zusätzlicheif-else-Blöcke hinzufügen, um verschiedene Zahlen nacheinander zu prüfen. Der Einfachheit halber ändern wir den Wert vonnumberund führen das Programm für jeden Testfall erneut aus.
Zunächst testen wir mit einer positiven ungeraden Zahl. Ändern Sie die Zeile int number = 10; in:
int number = 7; // Test with a positive odd number
Speichern Sie die Datei.
Kompilieren Sie das geänderte Programm im Terminal:
javac EvenCheck.java
- Führen Sie das Programm aus:
java EvenCheck
Sie sollten die folgende Ausgabe sehen:
7 is an odd number.
- Jetzt testen wir mit einer negativen geraden Zahl. Ändern Sie die Zeile
int number = 7;in:
int number = -4; // Test with a negative even number
Speichern Sie die Datei.
Kompilieren Sie das Programm:
javac EvenCheck.java
- Führen Sie das Programm aus:
java EvenCheck
Sie sollten die folgende Ausgabe sehen:
-4 is an even number.
- Als Nächstes testen wir mit einer negativen ungeraden Zahl. Ändern Sie die Zeile
int number = -4;in:
int number = -3; // Test with a negative odd number
Speichern Sie die Datei.
Kompilieren Sie das Programm:
javac EvenCheck.java
- Führen Sie das Programm aus:
java EvenCheck
Sie sollten die folgende Ausgabe sehen:
-3 is an odd number.
- Schließlich testen wir mit Null. Ändern Sie die Zeile
int number = -3;in:
int number = 0; // Test with zero
Speichern Sie die Datei.
Kompilieren Sie das Programm:
javac EvenCheck.java
- Führen Sie das Programm aus:
java EvenCheck
Sie sollten die folgende Ausgabe sehen:
0 is an even number.
Wie Sie sehen können, identifiziert der Modulo-Operator korrekt gerade und ungerade Zahlen für positive, negative und Null-Werte. Die Logik number % 2 == 0 ist eine zuverlässige Methode, um die Geradzahligkeit für jede ganze Zahl zu prüfen.
Umgang mit nicht-ganzzahligen Eingaben
In den vorherigen Schritten haben wir erfolgreich den Modulo-Operator verwendet, um zu prüfen, ob ganze Zahlen gerade oder ungerade sind. Was passiert jedoch, wenn der Benutzer etwas eingibt, das keine ganze Zahl ist, wie eine Dezimalzahl oder Text? Unser aktuelles Programm ist für die Arbeit mit ganzen Zahlen (int) konzipiert, und die Eingabe von nicht-ganzzahligen Werten führt zu einem Fehler.
In diesem Schritt werden wir unser Programm ändern, um Eingaben vom Benutzer entgegenzunehmen und Fälle zu behandeln, in denen die Eingabe keine gültige ganze Zahl ist. Wir verwenden die Scanner-Klasse, die wir kurz im "Your First Java Lab" gesehen haben, um Benutzereingaben zu lesen.
Öffnen Sie die Datei
EvenCheck.javaim WebIDE-Editor.Ersetzen Sie den gesamten Inhalt der Datei durch den folgenden Code:
import java.util.Scanner; import java.util.InputMismatchException; public class EvenCheck { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter an integer: "); try { int number = scanner.nextInt(); // Read integer input from the user // Use the modulo operator to check for a remainder when divided by 2 if (number % 2 == 0) { System.out.println(number + " is an even number."); } else { System.out.println(number + " is an odd number."); } } catch (InputMismatchException e) { System.out.println("Invalid input. Please enter an integer."); } finally { scanner.close(); // Close the scanner } } }Schauen wir uns die Änderungen an:
import java.util.Scanner;: Importiert dieScanner-Klasse, um Eingaben zu lesen.import java.util.InputMismatchException;: Importiert die Ausnahmeklasse, die ausgelöst wird, wenn die Eingabe nicht dem erwarteten Typ entspricht.Scanner scanner = new Scanner(System.in);: Erstellt einScanner-Objekt, um Eingaben von der Konsole zu lesen.System.out.print("Enter an integer: ");: Fordert den Benutzer auf, eine Zahl einzugeben.try { ... } catch (InputMismatchException e) { ... }: Dies ist eintry-catch-Block, der zur Fehlerbehandlung verwendet wird. Der Code imtry-Block wird ausgeführt. Wenn eineInputMismatchExceptionauftritt (d. h., die Eingabe ist keine ganze Zahl), wird der Code imcatch-Block ausgeführt.int number = scanner.nextInt();: Diese Zeile versucht, eine ganze Zahl aus der Benutzereingabe zu lesen. Wenn der Benutzer etwas eingibt, das nicht als ganze Zahl interpretiert werden kann, wird eineInputMismatchExceptionausgelöst.System.out.println("Invalid input. Please enter an integer.");: Diese Nachricht wird ausgegeben, wenn eineInputMismatchExceptiongefangen wird.finally { scanner.close(); }: Der Code imfinally-Block wird immer ausgeführt, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht. Hier wird es verwendet, um dieScanner-Ressource zu schließen.
Speichern Sie die Datei.
Kompilieren Sie das geänderte Programm im Terminal:
javac EvenCheck.javaFühren Sie das Programm aus:
java EvenCheckWenn Sie dazu aufgefordert werden, geben Sie eine ganze Zahl ein (z. B.
15) und drücken Sie die Eingabetaste. Das Programm sollte korrekt feststellen, ob die Zahl gerade oder ungerade ist.Enter an integer: 15 15 is an odd number.Führen Sie das Programm erneut aus:
java EvenCheckDiesmal geben Sie bei der Aufforderung einen nicht-ganzzahligen Wert ein (z. B.
hellooder3.14) und drücken Sie die Eingabetaste. Das Programm sollte nun die ungültige Eingabe gracefully (anständig) behandeln.Enter an integer: hello Invalid input. Please enter an integer.
Durch das Hinzufügen des try-catch-Blocks ist unser Programm nun robuster und kann Fälle behandeln, in denen der Benutzer Eingaben in einem nicht-erwarteten Format liefert. Dies ist ein wichtiger Aspekt beim Schreiben benutzerfreundlicher Programme.
Zusammenfassung
In diesem Lab haben wir gelernt, wie man in Java mithilfe des Modulo-Operators (%) prüft, ob eine Zahl gerade ist. Wir haben festgestellt, dass eine gerade Zahl bei der Division durch 2 einen Rest von 0 hat. Wir haben ein einfaches Java-Programm implementiert, das eine if-else-Anweisung verwendet, um diese Prüfung durchzuführen und auszugeben, ob eine gegebene ganze Zahl gerade oder ungerade ist.
Wir haben weiter untersucht, wie man die Prüfung auf Geradzahligkeit sowohl mit positiven als auch mit negativen ganzen Zahlen testet, um sicherzustellen, dass sich der Modulo-Operator für unterschiedliche Vorzeichen wie erwartet verhält. Schließlich haben wir überlegt, wie man nicht-ganzzahlige Eingaben behandelt, indem wir verstanden haben, dass der Modulo-Operator normalerweise mit Ganzzahltypen verwendet wird, und potentielle Ansätze zur Validierung von Eingabetypen oder zur Behandlung von Ausnahmen in einer robusteren Anwendung diskutiert haben.



