2016-08-30 3 views
2

Während Forschung für eine Aufgabe (eine Quittung erstellen) fand ich den folgenden Code:Was bedeutet dieses "String # -Format" -Muster?

public class Kassenzettel { 
    public static void main(String[] args) { 

     // Einzelpreise - Waren 
     double SEBox = 299.00; 
     double Hauptplatine = 79.80; 
     double Erweiterungsplatine =52.60; 
     double Anschlusskabel = 19.50; 
     double Firmware = 36.00; 

     // Anzahl - Waren 
     int anzSEBox = 1; 
     int anzHauptplatine = 1; 
     int anzErweiterungsplatine = 1; 
     int anzAnschlusskabel = 2; 
     int anzFirmware = 2; 

     // Inhalt - Brieftasche 
     double brieftasche = 550.00; 

     // Gekaufte Waren 
     double summe = 0; 
     summe = summe + anzSEBox * SEBox; 
     summe = summe + anzHauptplatine * Hauptplatine; 
     summe = summe + anzErweiterungsplatine * Erweiterungsplatine; 
     summe = summe + anzAnschlusskabel * Anschlusskabel; 
     summe = summe + anzFirmware * Firmware; 

     if (summe > brieftasche) { 
      System.out.println("Nicht genuegend Geld in der Brieftasche"); 
     } else { 

      System.out.println("____________________________________"); 
      System.out.println("DATCOM protelematik GmbH - Kassenbon"); 
      System.out.println("____________________________________"); 

      System.out.println(String.format("%-9s %2d x %5.2f EUR", "SEBox", anzSEBox, SEBox)); 
      System.out.println(String.format("%30.2f EUR", anzSEBox * SEBox)); 

      System.out.println(String.format("%-9s %2d x %5.2f EUR", "Hauptplatine", anzHauptplatine, Hauptplatine)); 
      System.out.println(String.format("%30.2f EUR", anzHauptplatine * Hauptplatine)); 

      System.out.println(String.format("%-9s %2d x %5.2f EUR", "Erweiterungsplatine", anzErweiterungsplatine, Erweiterungsplatine)); 
      System.out.println(String.format("%30.2f EUR", anzErweiterungsplatine * Erweiterungsplatine)); 

      System.out.println(String.format("%-9s %2d x %5.2f EUR", "Anschlusskabel", anzAnschlusskabel, Anschlusskabel)); 
      System.out.println(String.format("%30.2f EUR", anzAnschlusskabel * Anschlusskabel)); 

      System.out.println(String.format("%-9s %2d x %5.2f EUR", "Firmware", anzFirmware, Firmware)); 
      System.out.println(String.format("%30.2f EUR", anzFirmware * Firmware)); 

      System.out.println("____________________________________"); 

      System.out.println(String.format("%-9s %20.2f EUR", "Gesamt", summe)); 
      System.out.println(String.format("%-9s %20.2f EUR", "Gegeben", brieftasche)); 
      System.out.println(); 
      System.out.println(String.format("%-9s %20.2f EUR", "Zurueck", brieftasche - summe)); 
     } 
    } 
} 

Aber ich verstehe nicht, die folgende Zeile:

System.out.println(String.format("%-9s %2d x %5.2f EUR", "Anschlusskabel", anzAnschlusskabel, Anschlusskabel)); 

verstehe ich, was System.out.println für ist, aber kann mir jemand erklären was genau das ist für: "%-9s %2d x %5.2f EUR"?

ich denke, es für den Teil ist, wo der Code sagt:

SEBox  1 x 299,00 EUR 
         299,00 EUR 
Hauptplatine 1 x 79,80 EUR 
         79,80 EUR 
Erweiterungsplatine 1 x 52,60 EUR 
         52,60 EUR 
Anschlusskabel 2 x 19,50 EUR 
         39,00 EUR 
Firmware 2 x 36,00 EUR 
         72,00 EUR 

aber warum und wie?

+5

https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html –

Antwort

5

String.format wird zum Formatieren der Zeichenfolge verwendet.

% ist ein Sonderzeichen, das angibt, dass eine Formatierungsanweisung folgt.

Die Art des Arguments wird mit d, f, x und s bezeichnet.

  • ganzen Zahlen - d,

  • strings - s,

  • Gleitkomma - f

  • ganze Zahlen mit hex Format- x.

%-9s: formatiert die Zeichenfolge wie sie ist. Wenn die Zeichenfolge weniger als 9 Zeichen enthält, wird die Ausgabe rechts aufgefüllt.

%2d: formatiert die Ganzzahl wie sie ist. Wenn die Anzahl der Ziffern kleiner als 2 ist, wird der Ausgang links aufgefüllt.

%5.2f: formatiert maximal 2 Dezimalziffern der Zahl. Der Ausgang belegt mindestens 5 Zeichen. Wenn die Anzahl der Ziffern nicht ausreicht, wird sie aufgefüllt.