Wie man prüft, ob eine Zahl in Java gerade ist

JavaJavaBeginner
Jetzt üben

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

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/data_types("Data Types") java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") subgraph Lab Skills java/data_types -.-> lab-559962{{"Wie man prüft, ob eine Zahl in Java gerade ist"}} java/operators -.-> lab-559962{{"Wie man prüft, ob eine Zahl in Java gerade ist"}} java/if_else -.-> lab-559962{{"Wie man prüft, ob eine Zahl in Java gerade ist"}} java/user_input -.-> lab-559962{{"Wie man prüft, ob eine Zahl in Java gerade ist"}} java/exceptions -.-> lab-559962{{"Wie man prüft, ob eine Zahl in Java gerade ist"}} end

Verwendung des Modulo-Operators zur Überprüfung auf Geradezahl

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.

  1. Öffnen Sie die Datei EvenCheck.java im 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 und EvenCheck.java eingeben.

  2. Fügen Sie den folgenden Code in die Datei EvenCheck.java ein:

    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 namens number und weist ihr den Wert 10 zu. Wir können diesen Wert ändern, um verschiedene Zahlen zu testen.
    • if (number % 2 == 0): Dies ist eine if-Anweisung. Sie prüft, ob die Bedingung in den Klammern wahr ist. Die Bedingung number % 2 == 0 prüft, ob der Rest von number geteilt durch 2 gleich 0 ist.
    • System.out.println(number + " is an even number.");: Diese Zeile wird ausgeführt, wenn die Bedingung in der if-Anweisung wahr ist (die Zahl ist gerade).
    • else: Dieses Schlüsselwort leitet den Codeblock ein, der ausgeführt wird, wenn die Bedingung in der if-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.
  3. Speichern Sie die Datei EvenCheck.java (Strg+S oder Cmd+S).

  4. Jetzt kompilieren wir das Programm. Öffnen Sie das Terminal unten im WebIDE und stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden. Führen Sie dann den folgenden Befehl aus:

    javac EvenCheck.java

    Wenn keine Fehler auftreten, wird eine Datei EvenCheck.class erstellt.

  5. Führen Sie schließlich das kompilierte Programm aus:

    java EvenCheck

    Sie 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.

  1. Öffnen Sie die Datei EvenCheck.java im WebIDE-Editor.

  2. Ändern Sie die main-Methode, um mehrere verschiedene Zahlen zu testen. Sie können den Wert der Variable number mehrmals ändern oder zusätzliche if-else-Blöcke hinzufügen, um verschiedene Zahlen nacheinander zu prüfen. Der Einfachheit halber ändern wir den Wert von number und 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
  1. Speichern Sie die Datei.

  2. Kompilieren Sie das geänderte Programm im Terminal:

javac EvenCheck.java
  1. Führen Sie das Programm aus:
java EvenCheck

Sie sollten die folgende Ausgabe sehen:

7 is an odd number.
  1. 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
  1. Speichern Sie die Datei.

  2. Kompilieren Sie das Programm:

javac EvenCheck.java
  1. Führen Sie das Programm aus:
java EvenCheck

Sie sollten die folgende Ausgabe sehen:

-4 is an even number.
  1. 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
  1. Speichern Sie die Datei.

  2. Kompilieren Sie das Programm:

javac EvenCheck.java
  1. Führen Sie das Programm aus:
java EvenCheck

Sie sollten die folgende Ausgabe sehen:

-3 is an odd number.
  1. Schließlich testen wir mit Null. Ändern Sie die Zeile int number = -3; in:
int number = 0; // Test with zero
  1. Speichern Sie die Datei.

  2. Kompilieren Sie das Programm:

javac EvenCheck.java
  1. 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.

  1. Öffnen Sie die Datei EvenCheck.java im WebIDE-Editor.

  2. 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 die Scanner-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 ein Scanner-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 ein try-catch-Block, der zur Fehlerbehandlung verwendet wird. Der Code im try-Block wird ausgeführt. Wenn eine InputMismatchException auftritt (d. h., die Eingabe ist keine ganze Zahl), wird der Code im catch-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 eine InputMismatchException ausgelöst.
    • System.out.println("Invalid input. Please enter an integer.");: Diese Nachricht wird ausgegeben, wenn eine InputMismatchException gefangen wird.
    • finally { scanner.close(); }: Der Code im finally-Block wird immer ausgeführt, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht. Hier wird es verwendet, um die Scanner-Ressource zu schließen.
  3. Speichern Sie die Datei.

  4. Kompilieren Sie das geänderte Programm im Terminal:

    javac EvenCheck.java
  5. Führen Sie das Programm aus:

    java EvenCheck
  6. Wenn 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.
  7. Führen Sie das Programm erneut aus:

    java EvenCheck
  8. Diesmal geben Sie bei der Aufforderung einen nicht-ganzzahligen Wert ein (z. B. hello oder 3.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.