2017-07-28 3 views
1

In Ordnung, also habe ich vor zwei Tagen angefangen, Java zu lernen. Ich verwende Java SE und Netbeans 8.0.2, und ich habe ein paar außergewöhnlich einfache Anwendungen geschrieben. Ich versuche jedoch, die Quadratwurzel einer 32-64-Bit-Zahl (eine "lange") zu finden, und ich bekomme immer einen Fehler. Was mache ich falsch?Warum kann ich die Quadratwurzel eines "langen" nicht berechnen? (Kinderprogrammierer)

class Root { 
    public static void main(String[] arguements) { 
     long number; 
     number = 2500000000; 
     System.out.println("The square root of " 
       + number 
       + " is " 
       + Math.sqrt(number) 
     ); 
    } 
} 
+7

Bitte fügen Sie alle Fehler ein, die Sie als Teil Ihrer Frage erhalten. – azurefrog

+5

Das heißt, Sie erhalten einen Fehler, weil '2500000000' nicht lang ist, es ist ein int-Wert außerhalb des Bereichs. '2500000000L' ist lang. – azurefrog

+0

auch wenn Sie Tipps haben oder auf Ressourcen hinweisen können, die mir geholfen hätten, dies selbst herauszufinden. das würde auch geschätzt werden –

Antwort

1

Ein mögliches Problem ist, dass Math.sqrt nur doppelte Parameter akzeptiert. Die Lösung besteht einfach darin, von lang bis doppelt zu gießen.

Math.sqrt((double)number); 

Sowie, dass ein lange endet formal mit dem Suffix l oder L, die nicht auf Ihre lange Variable hinzugefügt wurde, so dass das Problem beitragen könnte.

+3

diese Zeile 'Nummer = 2500000000;' ist die Ursache des Problems, also würde ich vorschlagen, dies zu OP zu erwähnen. Außerdem müssen Sie nicht von "long" zu "double" wechseln. Dies geschieht ohne explizite Besetzung. –

+0

Danke schön! Es war der Mangel an L. Sorry für die dumme Frage, ich lehre mich selbst und ich wusste nicht, dass es eine Vorsilbe brauchte. –

+0

Kein Problem! Ich habe auch immer wieder solche schnellen Probleme, und ich mache jetzt seit ein paar Monaten Java. Viel Spaß beim Codieren von Java: P – Rigidity

Verwandte Themen