2016-06-17 1 views
-1

Verwenden Sie die Java Math-Quadratwurzelmethode, um Quadratwurzeln von 1 bis 1.000 zu berechnen. Geben Sie nur die ganzen Zahlen aus. Beginnen Sie nicht damit, Quadrate zu berechnen und dann die Quadratwurzel dieser Zahl auszudrucken. Berechnen Sie alle Quadratwurzeln und bestimmen Sie, ob es sich um ganze Zahlen handelt.Verwenden Sie die Java Math-Quadratwurzelmethode, um Quadratwurzeln von 1 bis 1.000 zu berechnen. Dann geben Sie nur die ganzen Zahlen aus

Ich sah mehrere Antworten, die um die Lösung zu tanzen schien, aber keiner von ihnen so sehr prägnant. Hier ist was ich bisher habe.

public class Assignment9 
{ 
    public static void main(String[] args) 
    { 
     double root = 1; 
     double sqrt = Math.sqrt(root); 

     do 
     { 
      if(sqrt % 1 == 0) 
      { 
       System.out.printf("%.0f\t%.0f%n", root, Math.sqrt(root)); 
       root++; 
      } 
     } 
     while(root <= 1000); 
    } 
} 

Der Ausgang druckt die Quadratwurzeln, aber zählt fortlaufend jede Zahl. Ich möchte nur eine Zahl pro perfektes Quadrat ausdrucken (z. B. 1 1, 4 2, 9 3 usw.). Ich verstehe die Frage, aber jedes Mal, wenn ich das Programm ausführen ich dies als meine Ausgabe:

 1 1 
    2 1 
    3 2 
    4 2 
    5 2 
    6 2 
    7 3 
    8 3 
    9 3 
    10 3 
    ... 
    1000 32 
+0

Was ist los mit Ihrer Einrückung? – khelwood

+3

Da Sie im Voraus wissen, wann Sie aufhören müssen, verwenden Sie die for-Schleife anstelle von do..while. Sie sparen eine Inkrementoperation. – spi

+0

Obwohl dies nicht mit Ihrem Problem zusammenhängt, haben Sie eine leichtere Zeit zum Codieren, indem Sie die for- und while-Schleife öfter verwenden als die Do-while-Schleife. Sie geben Ihnen mehr Kontrolle darüber, wie Sie in einem einfacher zu verwendenden Format iterieren. –

Antwort

2

Sie sind nicht den Wert sqrt aktualisieren. Es ist immer nur 1, und somit ist sqrt% 1 immer 0.

1

Da dies offensichtlich eine Aufgabe ist, würde ich eher einige Hinweise anstelle der Lösung geben.

Wichtige Punkte denken:

  • denke daran, wie sqrt in der Schleife aktualisiert wird.
  • Wenn sqrt % 1 == 0 falsch ist, was passiert mit root

Minor Punkten (und wie es die Schleife nicht beeinträchtigt?):

  • Sie einen doppelten brauchen root zu sein, das Sie wirklich?
Verwandte Themen