Wie zu verwenden-Formatierung mit printf korrekt in Java
Ich versuche, erstellen Sie ein einfaches Programm, um in drei Elemente, deren Mengen und Preise und fügte hinzu, Sie alle zusammen, um eine einfache Eingang-Typ-format. Mein professor gab mir ein bestimmtes format für die Quittung, wo alle Dezimalzahlen line-up und konsequent platziert. Es sollte so Aussehen.
Your Bill:
Item Quantity Price Total
Diet Soda 10 1.25 12.50
Candy 1 1.00 1.00
Cheese 2 2.00 4.00
Subtotal 17.50
6.25% Sales Tax 1.09
Total 18.59
Mein professor angegeben, es sollte 30 Zeichen für den Namen, 10 für Menge und Einzelpreis und den Gesamtpreis. Dies zu tun, ich habe mit der printf-Methode. Ich bin versucht zu formatieren Sie es mit diesem code bisher.
import java.util.Scanner;
class AssignmentOneTest {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
//System.out.printf("$%4.2f for each %s ", price, item);
//System.out.printf("\nThe total is: $%4.2f ", total);
//process for item one
System.out.println("Please enter in your first item");
String item = kb.nextLine();
System.out.println("Please enter the quantity for this item");
int quantity = Integer.parseInt(kb.nextLine());
System.out.println("Please enter in the price of your item");
double price = Double.parseDouble(kb.nextLine());
//process for item two
System.out.println("Please enter in your second item");
String item2 = kb.nextLine();
System.out.println("Please enter the quantity for this item");
int quantity2 = Integer.parseInt(kb.nextLine());
System.out.print("Please enter in the price of your item");
double price2 = Double.parseDouble(kb.nextLine());
double total2 = quantity2 * price2;
//System.out.printf("$%4.2f for each %s ", price2, item2);
//System.out.printf("\nThe total is: $%4.2f ", total2);
//process for item three
System.out.println("Please enter in your third item");
String item3 = kb.nextLine();
System.out.println("Please enter the quantity for this item");
int quantity3 = Integer.parseInt(kb.nextLine());
System.out.println("Please enter in the price of your item");
double price3 = Double.parseDouble(kb.nextLine());
double total3 = quantity3 * price3;
//System.out.printf("$%4.2f for each %s ", price3, item3);
//System.out.printf("\nThe total is: $%4.2f ", total3);
double total = quantity * price;
double grandTotal = total + total2 + total3;
double salesTax = grandTotal * (.0625);
double grandTotalTaxed = grandTotal + salesTax;
String amount = "Quantity";
String amount1 = "Price";
String amount2 = "Total";
String taxSign = "%";
System.out.printf("\nYour bill: ");
System.out.printf("\n\nItem");
System.out.printf("%30s", amount);
//System.out.printf("\n%s %25d %16.2f %11.2f", item, quantity, price,
//total);
//System.out.printf("\n%s %25d %16.2f %11.2f", item2,quantity2, price2,
//total2);
//System.out.printf("\n%s %25d %16.2f %11.2f", item3,quantity3, price3,
//total3);
System.out.printf("\n%s", item);
System.out.printf("%30d", quantity);
System.out.printf("\n%s", item2);
System.out.printf("\n%s", item3);
System.out.printf("\n\n\nSubtotal %47.2f", grandTotal);
System.out.printf("\n6.25 %s sales tax %39.2f", taxSign, salesTax);
System.out.printf("\nTotal %50.2f", grandTotalTaxed);
}
}
Wenn ich geben Sie in einer längeren item-Namen, verschiebt es die Platzierung und Menge, Preis und Summe.
Meine Frage ist, wie mache ich einen "Startpunkt setzen" mit einer begrenzten Breite mit printf, bitte um Hilfe.
- Ich hoffe, dies wird Ihnen eine Vorstellung stackoverflow.com/questions/8609249/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird, drucken Sie die Zeile
Die erste Zeichenfolge übergeben, um die
printf
Methode ist eine Reihe von formatbezeichnern, die beschreiben, wie wir wollen, der rest der Argumente, die gedruckt werden. Um die Formatbezeichner können Sie hinzufügen von anderen Zeichen, die auch ausgedruckt werden (ohne formatieren).Den Formatbezeichner oben haben die syntax:
%[index$][flags][width][.precision]conversion
wo[]
kennzeichnet optional.%
beginnt eine Formatierung Ausdruck.[index$]
gibt den index des Arguments, das Sie formatieren möchten. Indizes beginnen bei 1. Die Indizes werden nicht wirklich benötigt, da jeder Formatbezeichner ohne index zugeordnet ist, ein zählen von 1.[-]
Die einzige Flagge, die oben verwendet wurden, richtet sich die Ausgabe nach Links.[width]
gibt die minimale Anzahl von Zeichen gedruckt werden.[.precision]
In diesem Fall die Anzahl der Ziffern geschrieben werden, nach dem Komma, obwohl diese variiert mit verschiedenen Konvertierungen.conversion
Charakter(s), der angibt, wie das argument formatiert werden soll.d
ist für dezimale Ganzzahlf
dezimal-format für die schwimmende Punkte,s
nicht ändern, dass der string in unserem Fall.Mehr Informationen finden Sie hier.