Wie man prüft, ob eine Zahl in Java 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

In diesem Lab lernen Sie, wie Sie in Java feststellen können, ob eine Zahl eine Ganzzahl ist. Wir werden verschiedene Techniken untersuchen, beginnend mit der Methode Math.floor(), um auf Ganzzahlwerte zu prüfen. Sie werden sowohl mit den Datentypen double als auch float üben, um zu verstehen, wie diese Methode mit verschiedenen Fließkommadarstellungen reagiert. Abschließend werden wir behandeln, wie Sie Zeichenketteneingaben verarbeiten und sie in numerische Typen umwandeln können, bevor Sie die Ganzzahlprüfung durchführen. Dieses Lab vermittelt Ihnen praktische Fähigkeiten zur Validierung numerischer Daten in Ihren Java-Programmen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/BasicSyntaxGroup -.-> java/data_types("Data Types") java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/math("Math") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/SystemandDataProcessingGroup -.-> java/math_methods("Math Methods") subgraph Lab Skills java/data_types -.-> lab-559960{{"Wie man prüft, ob eine Zahl in Java eine Ganzzahl ist"}} java/operators -.-> lab-559960{{"Wie man prüft, ob eine Zahl in Java eine Ganzzahl ist"}} java/math -.-> lab-559960{{"Wie man prüft, ob eine Zahl in Java eine Ganzzahl ist"}} java/user_input -.-> lab-559960{{"Wie man prüft, ob eine Zahl in Java eine Ganzzahl ist"}} java/math_methods -.-> lab-559960{{"Wie man prüft, ob eine Zahl in Java eine Ganzzahl ist"}} end

Verwendung von Math.floor() zur Überprüfung auf Ganzzahlen

In diesem Schritt werden wir untersuchen, wie man in Java mithilfe der Methode Math.floor() feststellt, ob eine Zahl eine Ganzzahl ist. Dies ist eine häufige Aufgabe in der Programmierung, insbesondere wenn es um Benutzereingaben oder Berechnungen geht.

Zunächst verstehen wir, was Math.floor() tut. Die Methode Math.floor() in Java gibt die größte Ganzzahl zurück, die kleiner oder gleich dem Argument ist. Beispielsweise würde Math.floor(5.9) 5.0 zurückgeben, und Math.floor(5.0) würde ebenfalls 5.0 zurückgeben.

Wir können diese Eigenschaft nutzen, um zu prüfen, ob eine Zahl eine Ganzzahl ist. Wenn eine Zahl eine Ganzzahl ist, ergibt die Anwendung von Math.floor() auf diese Zahl die gleiche Zahl. Wenn die Zahl einen Nachkommateil hat, gibt Math.floor() eine kleinere Ganzzahl zurück.

Erstellen wir eine neue Java-Datei, um dies zu üben. Öffnen Sie die WebIDE und erstellen Sie eine neue Datei namens IntegerCheck.java im Verzeichnis ~/project.

Kopieren und fügen Sie jetzt den folgenden Code in die Datei IntegerCheck.java ein:

public class IntegerCheck {

    public static void main(String[] args) {
        double number1 = 10.0;
        double number2 = 10.5;

        // Check if number1 is an integer
        if (number1 == Math.floor(number1)) {
            System.out.println(number1 + " is an integer.");
        } else {
            System.out.println(number1 + " is not an integer.");
        }

        // Check if number2 is an integer
        if (number2 == Math.floor(number2)) {
            System.out.println(number2 + " is an integer.");
        } else {
            System.out.println(number2 + " is not an integer.");
        }
    }
}

Lassen Sie uns den Code analysieren:

  • double number1 = 10.0; und double number2 = 10.5;: Wir deklarieren zwei double-Variablen, eine repräsentiert einen Ganzzahlwert und die andere einen Nicht-Ganzzahlwert.
  • if (number1 == Math.floor(number1)): Dies ist die Kernlogik. Wir vergleichen die ursprüngliche Zahl (number1) mit dem Ergebnis von Math.floor(number1). Wenn sie gleich sind, ist die Zahl eine Ganzzahl.
  • System.out.println(...): Diese Zeilen geben das Ergebnis in die Konsole aus.

Speichern Sie die Datei IntegerCheck.java.

Jetzt kompilieren und führen wir das Programm aus. Öffnen Sie das Terminal in der WebIDE und stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden.

Kompilieren Sie den Code mit javac:

javac IntegerCheck.java

Wenn die Kompilierung erfolgreich ist, sollten Sie eine neue Datei namens IntegerCheck.class im Verzeichnis ~/project sehen.

Führen Sie jetzt den kompilierten Code mit java aus:

java IntegerCheck

Sie sollten die folgende Ausgabe sehen:

10.0 is an integer.
10.5 is not an integer.

Diese Ausgabe bestätigt, dass unsere Logik mit Math.floor() korrekt erkennt, ob ein double-Wert eine Ganzzahl darstellt.

Testen mit den Datentypen Double und Float

Im vorherigen Schritt haben wir Math.floor() mit double-Werten verwendet. Java verfügt über verschiedene Datentypen zur Darstellung von Zahlen, darunter double und float. Beide werden für Fließkommazahlen (Zahlen mit Dezimalpunkten) verwendet, aber double bietet eine höhere Genauigkeit als float.

Ändern wir unser IntegerCheck.java-Programm, um sowohl mit double- als auch mit float-Typen zu testen und zu sehen, wie Math.floor() mit jedem Typ funktioniert.

Öffnen Sie die Datei IntegerCheck.java im WebIDE-Editor.

Ersetzen Sie den vorhandenen Code durch den folgenden:

public class IntegerCheck {

    public static void main(String[] args) {
        double doubleNumber1 = 20.0;
        double doubleNumber2 = 20.75;

        float floatNumber1 = 30.0f; // Note the 'f' suffix for float literals
        float floatNumber2 = 30.25f;

        // Check if doubleNumber1 is an integer
        if (doubleNumber1 == Math.floor(doubleNumber1)) {
            System.out.println(doubleNumber1 + " (double) is an integer.");
        } else {
            System.out.println(doubleNumber1 + " (double) is not an integer.");
        }

        // Check if doubleNumber2 is an integer
        if (doubleNumber2 == Math.floor(doubleNumber2)) {
            System.out.println(doubleNumber2 + " (double) is an integer.");
        } else {
            System.out.println(doubleNumber2 + " (double) is not an integer.");
        }

        // Check if floatNumber1 is an integer
        // Math.floor() takes a double, so the float is promoted to double
        if (floatNumber1 == Math.floor(floatNumber1)) {
            System.out.println(floatNumber1 + " (float) is an integer.");
        } else {
            System.out.println(floatNumber1 + " (float) is not an integer.");
        }

        // Check if floatNumber2 is an integer
        if (floatNumber2 == Math.floor(floatNumber2)) {
            System.out.println(floatNumber2 + " (float) is an integer.");
        } else {
            System.out.println(floatNumber2 + " (float) is not an integer.");
        }
    }
}

Beachten Sie das f-Suffix hinter den float-Literalwerten (30.0f, 30.25f). Dies ist in Java erforderlich, um anzugeben, dass es sich bei der Zahl um einen float und nicht um einen double handelt (der Standard für Fließkomma-Literale).

Beachten Sie auch, dass Math.floor() so definiert ist, dass es ein double-Argument akzeptiert. Wenn Sie einen float an Math.floor() übergeben, wird der float von Java automatisch in einen double umgewandelt, bevor die Methode ausgeführt wird. Der Vergleich floatNumber1 == Math.floor(floatNumber1) funktioniert dennoch, da das Ergebnis von Math.floor() (ein double) mit floatNumber1 verglichen wird (der ebenfalls für den Vergleich in einen double umgewandelt wird).

Speichern Sie die Datei IntegerCheck.java.

Jetzt kompilieren und führen Sie das geänderte Programm aus dem Terminal im Verzeichnis ~/project aus:

javac IntegerCheck.java
java IntegerCheck

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

20.0 (double) is an integer.
20.75 (double) is not an integer.
30.0 (float) is an integer.
30.25 (float) is not an integer.

Dies zeigt, dass unsere Vergleichsmethode mit Math.floor() sowohl für double- als auch für float-Typen korrekt funktioniert.

Umgang mit der Konvertierung von String-Eingaben

In realen Anwendungen müssen Sie oft Eingaben vom Benutzer erhalten, und diese Eingaben werden normalerweise als String gelesen. Um numerische Prüfungen wie die Bestimmung, ob die Eingabe eine Ganzzahl darstellt, durchzuführen, müssen Sie zunächst den String in einen numerischen Typ wie double umwandeln.

In diesem Schritt werden wir unser Programm ändern, um die Benutzereingabe als String zu nehmen, sie in einen double umzuwandeln und dann Math.floor() zu verwenden, um zu prüfen, ob die ursprüngliche Eingabe eine Ganzzahl darstellt.

Öffnen Sie die Datei IntegerCheck.java im WebIDE-Editor.

Ersetzen Sie den vorhandenen Code durch den folgenden:

import java.util.Scanner; // Import the Scanner class

public class IntegerCheck {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Create a Scanner object

        System.out.print("Enter a number: "); // Prompt the user for input
        String input = scanner.nextLine(); // Read user input as a String

        try {
            // Convert the String input to a double
            double number = Double.parseDouble(input);

            // Check if the number is an integer using Math.floor()
            if (number == Math.floor(number)) {
                System.out.println("The input '" + input + "' represents an integer.");
            } else {
                System.out.println("The input '" + input + "' does not represent an integer.");
            }

        } catch (NumberFormatException e) {
            // Handle cases where the input is not a valid number
            System.out.println("Invalid input: '" + input + "' is not a valid number.");
        } finally {
            scanner.close(); // Close the scanner
        }
    }
}

Schauen wir uns die neuen Teile des Codes an:

  • import java.util.Scanner;: Diese Zeile importiert die Scanner-Klasse, die zum Lesen von Eingaben von der Konsole verwendet wird.
  • Scanner scanner = new Scanner(System.in);: Dies erstellt ein Scanner-Objekt, das Eingaben vom Standard-Eingabestrom (System.in) liest, was normalerweise die Tastatur ist.
  • System.out.print("Enter a number: ");: Diese Zeile fordert den Benutzer auf, eine Zahl einzugeben.
  • String input = scanner.nextLine();: Dies liest die gesamte Zeile der vom Benutzer eingegebenen Eingabe als String und speichert sie in der input-Variable.
  • try { ... } catch (NumberFormatException e) { ... }: Dies ist ein try-catch-Block. Er wird verwendet, um potenzielle Fehler zu behandeln. In diesem Fall versuchen wir, die String-Eingabe in einen double umzuwandeln. Wenn die Eingabe keine gültige Zahl ist (z.B. "hello"), tritt eine NumberFormatException auf, und der Code im catch-Block wird ausgeführt.
  • double number = Double.parseDouble(input);: Dies ist der entscheidende Teil für die Konvertierung. Double.parseDouble() ist eine statische Methode der Double-Klasse, die versucht, einen String in einen double-Wert umzuwandeln.
  • finally { scanner.close(); }: Der finally-Block stellt sicher, dass die scanner.close()-Methode aufgerufen wird, um die vom Scanner verwendeten Systemressourcen freizugeben, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht.

Speichern Sie die Datei IntegerCheck.java.

Jetzt kompilieren und führen Sie das Programm aus dem Terminal im Verzeichnis ~/project aus:

javac IntegerCheck.java
java IntegerCheck

Das Programm wartet nun auf Ihre Eingabe.

Versuchen Sie, eine Ganzzahl wie 42 einzugeben und Enter zu drücken. Die Ausgabe sollte wie folgt sein:

Enter a number: 42
The input '42' represents an integer.

Führen Sie das Programm erneut aus und geben Sie eine nicht-ganzzahlige Zahl wie 3.14 ein und drücken Sie Enter. Die Ausgabe sollte wie folgt sein:

Enter a number: 3.14
The input '3.14' does not represent an integer.

Führen Sie das Programm noch einmal aus und geben Sie etwas ein, das keine Zahl ist, wie test, und drücken Sie Enter. Die Ausgabe sollte wie folgt sein:

Enter a number: test
Invalid input: 'test' is not a valid number.

Dies zeigt, wie man Benutzereingaben als String verarbeiten, sie in einen numerischen Typ umwandeln und dann unsere Math.floor()-Prüfung anwenden kann, während man auch potenzielle Fehler aufgrund ungültiger Eingaben behandelt.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in Java prüft, ob eine Zahl eine Ganzzahl ist, indem man die Methode Math.floor() verwendet. Wir haben das Konzept untersucht, dass Math.floor() für eine Ganzzahl denselben Wert zurückgibt, während es für eine nicht-ganzzahlige Zahl eine kleinere Ganzzahl zurückgibt. Wir haben diese Logik in einem Java-Programm implementiert, indem wir die ursprüngliche Zahl mit dem Ergebnis von Math.floor() verglichen haben, um zu bestimmen, ob es sich um eine Ganzzahl handelt.