Zu allererst % s bedeutet String und % f Schwimmermittel Nummer.
System.out.printf ("% - 40s% -6.2f", "Leihgebühr: $", borrowingFee + "\ n");
In Ihrem Fall erstellt das 3. Argument, borrowingFee + "\n"
, eine Zeichenfolge, die nicht mit% f übereinstimmen konnte. Aus diesem Grund erhalten Sie möglicherweise die Ausnahmebedingungsnachricht java.util.IllegalFormatConversionException: f != java.lang.String
Hier zeigt IllegalFormatConversionException an, dass f
(% f) nicht mit java.lang.String kompatibel ist.
Die einfache Lösung ist die \n
in das erste Argument zu bewegen, da es das Format ist:
System.out.printf("%-40s %-6.2f\n", "Borrowing Fee: ", borrowingFee);
Beachten Sie, dass das erste Argument "%-40s %-6.2f\n"
das Format, die Leerzeichen mit% s und% f erzeugt, und der Rest Argumente sind die Füllungen für diese Leerzeichen.
Zusätzlich Ihr zweites Argument, "Borrowing Fee: $"
wird versprochen, eine feste Zeichenfolge zu sein. Wenn Sie keinen riesigen Abstand zwischen dem Doppelpunkt und der Zahl wie Borrowing Fee: 55.00
möchten, müssen Sie ihn nicht formatieren. Sie können einfach tun
System.out.printf("Borrowing Fee: %.2f\n", borrowingFee);
oder etwas größeren Raum mit \t
System.out.printf("Borrowing Fee:\t %.2f\n", borrowingFee);
printf auf docs.oracle.com (Java7):
public Print printf (String Format, Object ... args)
Parameter:
Format - Ein Formatstring als
in Format-String-Syntax beschrieben
args - Argumente von dem Formatbezeich verwiesen in der Formatzeichenfolge. Wenn es mehr Argumente als Formatbezeichner gibt, werden die zusätzlichen Argumente ignoriert. Die Anzahl der Argumente ist variabel und kann null sein. Die maximale Anzahl von Argumenten ist durch die maximale Dimension eines Java-Arrays begrenzt, wie in der Java ™ Virtual Machine-Spezifikation definiert. Das Verhalten bei einem Null-Argument hängt von der Konvertierung ab.
Ich beabsichtige, die Funktion aufrufen und den Fehler im Code zu erklären.
Überprüfen Sie Andys Link für Details zur Formatierung.
'borrowingFee +" \ n "' erzeugt eine 'Zeichenkette', fügt stattdessen' '\ n" 'an die Formatzeichenfolge an (das 1. Argument), es könnte auch bemerkenswert sein, dass'% n' wahrscheinlich sein sollte in der Formatzeichenfolge verwendet. –