2017-03-03 1 views
2

Ich habe eine Printf-Formatierungsfrage. Ich soll nur 10 Zahlen drucken, bevor ich zur nächsten Zeile gehe und 10 weitere Zahlen drucke und so weiter. Das Endziel ist wie ein Tisch, wobei alle Säulen aufgereiht und nach rechts ausgerichtet sind. Ich benutze auch eine while-Anweisung. Ich habe ein paar verschiedene Dinge ausprobiert, die ich in meiner Forschung gefunden habe, ohne Erfolg. Würde ich eine andere Druckanweisung als Printf verwenden? Wie Print oder PrintLn? Ich dachte auch darüber nach, eine If-Anweisung zu verwenden. Jede Hilfe würde sehr geschätzt werden! Vielen Dank.Nur 10 Ausgaben pro Zeile ausgeben

System.out.printf("Please enter a maximun integer value: "); 
    Scanner scan = new Scanner(System.in); 
    double n = scan.nextDouble(); 

    System.out.printf("The number you entered was: %.0f \n", n); // Just to check if user input is correct 

    double startNum = 0; 
    double sqrt = startNum; 

    System.out.printf("Squares less than %.0f are: ", n); 
    while (sqrt < n) { 
     sqrt = Math.pow(startNum, 2); 
     System.out.printf("%6.0f", sqrt); 
     startNum ++; 
    } 
+5

Vielleicht sollten Sie verfolgen, wie viele Sie gedruckt haben und eine neue Zeile nach jedem 10. beginnen. – chrylis

+0

Klar, wenn Sie 10 pro Zeile drucken möchten, müssen Sie die Nummer, die Sie drucken, verfolgen, oder? Und wenn du den 10. druckst, beginnst du eine neue Zeile und setzt deinen Zähler zurück, würdest du nicht denken? –

+0

@KenWhite Oder mod by 10. – shmosel

Antwort

1

eine MOD Bedingung verwenden, können Sie 10 Ausgabe pro Zeile gewährleisten.

import java.util.Scanner; 

class Test { 
    public static void main(String[] args) { 
     System.out.printf("Please enter a maximun integer value: "); 
     Scanner scan = new Scanner(System.in); 
     double n = scan.nextDouble(); 

     System.out.printf("The number you entered was: %.0f \n", n); // Just to check if user input is correct 

     double startNum = 0; 
     double sqrt = startNum; 

     System.out.printf("Squares less than %.0f are: ", n); 
     while (sqrt < n) { 
      sqrt = Math.pow(startNum, 2); 
      if(startNum != 0 && startNum % 10 == 0) { 
       System.out.println(); 
      } 
      System.out.printf("%6.0f", sqrt); 
      startNum++; 
     } 
    } 
} 

Ausgang -

Bitte geben Sie eine maximun Integer-Wert: 150

Die eingegebene Nummer wurde: 150

Quadrate kleiner als 150 sind: 0 1 4 9 16 25 36 49 64 81

+0

Vielen Dank für Ihre Hilfe! Ich dachte, du müsstest eine If-Anweisung verwenden, aber ich war mir nicht sicher, wie es aufgebaut werden würde. Wenn ich es jetzt sehe, macht es Sinn. –

+0

Es gibt verschiedene Möglichkeiten, dies zu tun, Mod ist nur eine der einfachen Option. –

+0

Die erste Zeile ist korrekt. Obwohl jede Zeile nach nur 9 Nummern hat. –

0
while (sqrt < n) { 
    sqrt = Math.pow(startNum, 2); 
    System.out.printf("%6.0f", sqrt); 
    startNum ++; 

    if(startNum%10==0){ 
     System.out.printf("/n"); 
    } 
} 
+0

Dies würde nur 9 Werte in der ersten Zeile –

+0

drucken Bitte fügen Sie auch einige Erklärung zu der Antwort hinzu. – Sampada

Verwandte Themen