我正在尝试创建一个程序,用户可以在其中输入有关书籍的信息并获得输出,但代码似乎不起作用。我收到下面的错误。我是新编程,所以不知道代码有什么问题。
Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2806)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2753)
at java.util.Formatter.format(Formatter.java:2520)
at java.util.Formatter.format(Formatter.java:2455)
at java.lang.String.format(String.java:2940)
at C3519369.main(C3519369.java:47)
这是下面的代码。
import java.util.Scanner;
public class books{
public static void main (String[] args) {
final int MAX_BOOKS = 1;
Scanner scan = new Scanner (System.in);
String[] title = new String [MAX_BOOKS];
String[] author = new String [MAX_BOOKS];
double[] price = new double [MAX_BOOKS];
String[] publisher = new String [MAX_BOOKS];
String[] isbn = new String [MAX_BOOKS];
for (int i = 0; i < MAX_BOOKS; i ++) {
System.out.print("Enter the Title: ");
title [i] = scan.nextLine ();
System.out.print("Enter the Author: ");
author [i] = scan.nextLine ();
System.out.print("Enter the Price: ");
price [i] = scan.nextDouble ();
System.out.print("Enter the Publisher: ");
publisher [i] = scan.nextLine ();
System.out.print("Enter the ISBN: ");
isbn [i] = scan.nextLine ();
scan.nextLine();
}
System.out.println ();
System.out.println (String.format(("%-20s %-10s %-10s %-10s"), "Title", "Author", "Price", "Publisher"));
System.out.println (String.format(("%-20s %-10s %-10s %-10s"), "=====", "=====", "=====", "========="));
final String PRETTY_PRINT = "%-20s %-10s %-10s %6.2f";
double totalPrice = 0.0;
for (int i =0; i < MAX_BOOKS; i ++) {
totalPrice += price [i];
System.out.println(String.format (PRETTY_PRINT, title [i], author [i], price [i], publisher [i], isbn [i]));
}
System.out.println ();
System.out.println ("Total Price: " + String.format ("%6.2f", totalPrice));
System.out.println ("Average Price: " + String.format ("%6.2f", totalPrice / MAX_BOOKS));
scan.close ();
}
}
这里 :
//PRETTY_PRINT = "%-20s %-10s %-10s %6.2f";
System.out.println(String.format (PRETTY_PRINT, title [i], author [i], price [i], publisher [i], isbn [i]));
字符串格式与给定的参数不匹配:%6.2f
应该用于显示float
但你给它一个String
(isbn
是一个String[]
)。
您可以像这样重现错误:
//Try to replace "yolo" with a float.
System.out.println(String.format("%6.2f", "yolo"));