Wie man prüft, ob eine Zahl in Java eine perfekte Quadratzahl 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 gegebene Ganzzahl eine perfekte Quadratzahl ist. Wir werden die Verwendung der Methode Math.sqrt() untersuchen, um die Quadratwurzel einer Zahl zu berechnen und dann zu prüfen, ob das Ergebnis eine ganze Zahl ist.

Durch praktische Codierungsübungen werden Sie ein Java-Programm implementieren, das Benutzereingaben entgegennimmt, die Quadratwurzel berechnet und feststellt, ob die ursprüngliche Zahl eine perfekte Quadratzahl ist. Wir werden das Programm auch mit verschiedenen Eingaben testen, einschließlich negativer Zahlen und Zahlen, die keine perfekten Quadratzahlen sind, um seine Robustheit sicherzustellen.


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/if_else("If...Else") java/BasicSyntaxGroup -.-> java/math("Math") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/SystemandDataProcessingGroup -.-> java/math_methods("Math Methods") subgraph Lab Skills java/if_else -.-> lab-559958{{"Wie man prüft, ob eine Zahl in Java eine perfekte Quadratzahl ist"}} java/math -.-> lab-559958{{"Wie man prüft, ob eine Zahl in Java eine perfekte Quadratzahl ist"}} java/user_input -.-> lab-559958{{"Wie man prüft, ob eine Zahl in Java eine perfekte Quadratzahl ist"}} java/exceptions -.-> lab-559958{{"Wie man prüft, ob eine Zahl in Java eine perfekte Quadratzahl ist"}} java/math_methods -.-> lab-559958{{"Wie man prüft, ob eine Zahl in Java eine perfekte Quadratzahl ist"}} end

Quadratwurzel berechnen und Ganzzahl prüfen

In diesem Schritt werden wir ein Java-Programm schreiben, um die Quadratwurzel einer Zahl zu berechnen und zu bestimmen, ob die ursprüngliche Zahl eine perfekte Quadratzahl ist. Eine perfekte Quadratzahl ist eine Ganzzahl, die das Quadrat einer anderen Ganzzahl ist; anders ausgedrückt, es ist das Produkt einer Ganzzahl mit sich selbst. Beispielsweise ist 9 eine perfekte Quadratzahl, weil es 3 * 3 ist.

Wir werden die von Java bereitgestellte Methode Math.sqrt() verwenden, um die Quadratwurzel zu berechnen. Diese Methode gibt einen double-Wert zurück, der eventuell Nachkommastellen hat. Um zu prüfen, ob die ursprüngliche Zahl eine perfekte Quadratzahl ist, müssen wir überprüfen, ob ihre Quadratwurzel eine ganze Zahl (eine Ganzzahl) ist.

  1. Zunächst erstellen wir eine neue Java-Datei namens SquareRootChecker.java in Ihrem ~/project-Verzeichnis. Sie können dies tun, indem Sie mit der rechten Maustaste im Dateiexplorer links klicken und "Neue Datei" auswählen, und dann SquareRootChecker.java eingeben.

  2. Öffnen Sie die Datei SquareRootChecker.java im Editor und fügen Sie den folgenden Code ein:

    import java.util.Scanner;
    
    public class SquareRootChecker {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            System.out.print("Enter an integer: ");
            int number = scanner.nextInt();
    
            if (number < 0) {
                System.out.println("Cannot calculate the square root of a negative number.");
            } else {
                double squareRoot = Math.sqrt(number);
    
                // Check if the square root is an integer
                if (squareRoot == Math.floor(squareRoot)) {
                    System.out.println(number + " is a perfect square.");
                } else {
                    System.out.println(number + " is not a perfect square.");
                }
            }
    
            scanner.close();
        }
    }

    Schauen wir uns die neuen Teile dieses Codes an:

    • import java.util.Scanner;: Wir importieren erneut die Scanner-Klasse, um Benutzereingaben zu lesen.
    • System.out.print("Enter an integer: ");: Dies fordert den Benutzer auf, eine Zahl einzugeben.
    • int number = scanner.nextInt();: Dies liest die vom Benutzer eingegebene Ganzzahl und speichert sie in der Variablen number.
    • if (number < 0): Dies ist eine if-Anweisung, die prüft, ob die eingegebene Zahl negativ ist. Wenn ja, geben wir eine Fehlermeldung aus.
    • double squareRoot = Math.sqrt(number);: Diese Zeile verwendet die Methode Math.sqrt(), um die Quadratwurzel der number zu berechnen und speichert das Ergebnis in einer double-Variablen namens squareRoot.
    • if (squareRoot == Math.floor(squareRoot)): Dies ist die Kernlogik, um zu prüfen, ob die Quadratwurzel eine Ganzzahl ist. Math.floor(squareRoot) gibt die größte Ganzzahl zurück, die kleiner oder gleich squareRoot ist. Wenn squareRoot eine ganze Zahl ist, sind squareRoot und Math.floor(squareRoot) gleich.
    • System.out.println(...): Diese Zeilen geben das Ergebnis aus, je nachdem, ob die Zahl eine perfekte Quadratzahl ist oder nicht.
  3. Speichern Sie die Datei (Strg+S oder Cmd+S).

  4. Jetzt kompilieren wir das Programm im Terminal:

    javac SquareRootChecker.java

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

  5. Führen Sie das kompilierte Programm aus:

    java SquareRootChecker
  6. Das Programm fordert Sie auf, eine Ganzzahl einzugeben. Geben Sie eine Zahl wie 9 ein und drücken Sie die Eingabetaste. Sie sollten eine Ausgabe sehen, die angibt, dass 9 eine perfekte Quadratzahl ist. Führen Sie das Programm erneut aus und geben Sie eine Zahl wie 10 ein. Sie sollten eine Ausgabe sehen, die angibt, dass 10 keine perfekte Quadratzahl ist.

    Enter an integer: 9
    9 is a perfect square.
    Enter an integer: 10
    10 is not a perfect square.

Sie haben erfolgreich ein Java-Programm geschrieben, das die Quadratwurzel berechnet und prüft, ob eine Zahl eine perfekte Quadratzahl ist!

Verwendung von Math.sqrt() für perfekte Quadratzahlen

In diesem Schritt werden wir uns darauf konzentrieren, wie Math.sqrt() funktioniert und wie wir es im vorherigen Schritt verwendet haben, um zu bestimmen, ob eine Zahl eine perfekte Quadratzahl ist.

Die Methode Math.sqrt() ist Teil der eingebauten Math-Klasse von Java, die viele mathematische Funktionen bereitstellt. Math.sqrt(double a) nimmt einen double-Wert a als Eingabe und gibt seine Quadratwurzel als double zurück.

Beispiel:

  • Math.sqrt(9.0) gibt 3.0 zurück.
  • Math.sqrt(10.0) gibt ungefähr 3.1622776601683795 zurück.
  • Math.sqrt(0.0) gibt 0.0 zurück.
  • Math.sqrt(-9.0) gibt NaN (Not a Number) zurück.

In unserem Programm SquareRootChecker.java lesen wir eine Ganzzahl vom Benutzer ein, aber Math.sqrt() erwartet einen double-Wert. Java konvertiert automatisch die int-Variable number in einen double, wenn wir sie an Math.sqrt() übergeben.

Der Schlüssel zur Prüfung auf eine perfekte Quadratzahl liegt in dem Vergleich der berechneten Quadratwurzel (double squareRoot) mit ihrem ganzzahligen Teil (Math.floor(squareRoot)).

  • Wenn squareRoot eine ganze Zahl ist (z. B. 3.0), dann ist auch Math.floor(squareRoot) 3.0, und die Bedingung squareRoot == Math.floor(squareRoot) ist wahr.
  • Wenn squareRoot einen Nachkommanteil hat (z. B. 3.16...), dann ist Math.floor(squareRoot) 3.0, und die Bedingung squareRoot == Math.floor(squareRoot) ist falsch.

Dieser einfache Vergleich ermöglicht es uns, effektiv zu prüfen, ob die ursprüngliche Ganzzahl eine perfekte Quadratzahl war.

Lassen Sie uns das Programm ein paar Mal erneut ausführen, um die Ausgabe für verschiedene Eingaben zu beobachten und Ihr Verständnis zu festigen.

  1. Stellen Sie sicher, dass Sie sich im Terminal im Verzeichnis ~/project befinden.

  2. Führen Sie das kompilierte Programm erneut aus:

    java SquareRootChecker
  3. Geben Sie die Zahl 25 ein und drücken Sie die Eingabetaste. Beobachten Sie die Ausgabe.

    Enter an integer: 25
    25 is a perfect square.
  4. Führen Sie das Programm erneut aus:

    java SquareRootChecker
  5. Geben Sie die Zahl 15 ein und drücken Sie die Eingabetaste. Beobachten Sie die Ausgabe.

    Enter an integer: 15
    15 is not a perfect square.

Durch das Ausführen des Programms mit verschiedenen Eingaben können Sie sehen, wie der Vergleich zwischen Math.sqrt() und Math.floor() korrekt perfekte Quadratzahlen identifiziert.

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.

  1. Stellen Sie sicher, dass Sie sich im Terminal im Verzeichnis ~/project befinden.

  2. Führen Sie das kompilierte Programm aus:

    java SquareRootChecker
  3. 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.

  1. Führen Sie das kompilierte Programm erneut aus:

    java SquareRootChecker
  2. 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.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in Java feststellt, ob eine gegebene Ganzzahl eine perfekte Quadratzahl ist. Wir haben die Methode Math.sqrt() verwendet, um die Quadratwurzel der eingegebenen Zahl zu berechnen.

Die Kernlogik bestand darin, zu prüfen, ob die berechnete Quadratwurzel eine ganze Zahl ist, indem wir sie mit ihrem ganzzahligen Teil mithilfe von Math.floor() verglichen haben. Wir haben auch den Fall von negativen Eingabezahlen behandelt, da deren Quadratwurzeln keine reellen Zahlen sind. Dieser Prozess hat es uns ermöglicht, perfekte Quadratzahlen effektiv zu identifizieren.