当前位置: 首页 > 知识库问答 >
问题:

格式标志转换不匹配异常

东方灵均
2023-03-14

编写一个程序,输入三种商品的名称、数量和价格。名称可能包含空格。输出税率为6.25%的账单。所有价格应输出到小数点后两位。账单应以30个字符的列格式设置,名称为30个字符,数量为10个字符,价格为10个字符,总数为10个字符。示例输入和输出如下所示:

import java.util.Scanner;

public class ProjectLab {

    public static final double SALES_TAX = 8.625;

    public static void main(String[]args) {

        Scanner input = new Scanner(System.in);

        String item1, item2, item3;

        int quantity1, quantity2, quantity3;

        double price1, price2, price3;

        //Input for the first Item
        System.out.println("Input the name of item 1: ");
        item1 = input.nextLine();

        System.out.println("Input quantity of item 1: ");
        quantity1 = input.nextInt();

        System.out.println("Input price of item 1: ");
        price1 = input.nextDouble();

        String junk = input.nextLine(); //Junk Line
        //Input for the second Item
        System.out.println("Input name of item 2: ");
        item2 = input.nextLine();

        System.out.println("Input quantity of item 2: ");
        quantity2 = input.nextInt();

        System.out.println("Input price of item 2: ");
        price2 = input.nextDouble();

        String junk2 = input.nextLine(); //Junk line 2
        //Input for the third item
        System.out.println("Input name of item 3: ");
        item3 = input.nextLine();

        System.out.println("Input quantity of item 3: ");
        quantity3 = input.nextInt();

        System.out.println("Input price of item 3: ");
        price3 = input.nextDouble();

        double subtotal1 = price1 * quantity1;
        double subtotal2 = price2 * quantity2;
        double subtotal3 = price3 * quantity3;

        System.out.println("Your bill: ");
        System.out.println("Item      Quantity    Price    Total");
        System.out.println(item1 + "    " + quantity1 + "   " + price1 + "  " + subtotal1 );
        System.out.println(item2 + "    " + quantity2 + "   " + price2 + "  " + subtotal2 );
        System.out.println(item3 + "    " + quantity3 + "   " + price3 + "  " + subtotal3 );

        double finalSubtotal = (subtotal1 + subtotal2 + subtotal3);

        System.out.printf("Subtotal %.2f          \n" , finalSubtotal);

        double tax = (finalSubtotal / SALES_TAX); 

        System.out.printf("8.265% Sales tax %.2f\n        ", tax);

        double total = tax + finalSubtotal;

        System.out.printf("Total %.2f                     ", total);
    }
}

输出:

Input the name of item 1: 
Gummi Bears
Input quantity of item 1: 
10
Input price of item 1: 
1.29
Input name of item 2: 
Monster Energy
Input quantity of item 2: 
3
Input price of item 2: 
2.97
Input name of item 3: 
Ruffles Chips
Input quantity of item 3: 
20
Input price of item 3: 
1.49
Your bill: 
Item      Quantity    Price    Total
Gummi Bears 10  1.29    12.9
Monster Energy  3   2.97    8.91
Ruffles Chips   20  1.49    29.8
Subtotal    51.61         
Exception in thread "main" java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags =  
    at java.util.Formatter$FormatSpecifier.failMismatch(Formatter.java:4298)
    at java.util.Formatter$FormatSpecifier.checkBadFlags(Formatter.java:2997)
    at java.util.Formatter$FormatSpecifier.checkGeneral(Formatter.java:2955)
    at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2725)
    at java.util.Formatter.parse(Formatter.java:2560)
    at java.util.Formatter.format(Formatter.java:2501)
    at java.io.PrintStream.format(PrintStream.java:970)
    at java.io.PrintStream.printf(PrintStream.java:871)
    at ProjectLab.main(ProjectLab.java:65)

共有2个答案

龚振
2023-03-14

使用字符串。格式(…) 在最后3次输出时。

试试这个

// also "\n" can be replaced with println
System.out.println(String.format("Subtotal %.2f          " , finalSubtotal));
// also escape the first % sign
System.out.println(String.format("8.265 %% Sales tax %.2f        ", tax));

有关字符串fromatting的更多信息,请访问此处

蔺宇
2023-03-14

你需要用另一个%来逃避你的%

System.out.printf("8.265%% Sales tax %.2f\n        ", tax);
 类似资料:
  •        坐标格式转换方法:设置-实验室(可参考10.1)-坐标格式转换        坐标格式转换后,会使应用中所有经纬度信息转换为对应格式 主界面 长按取点 点要素编辑

  • 我想做张桌子。我希望这些数字向左对齐。我不熟悉格式化,不知道为什么会出现错误。

  • Markdown 文档可以方便地转换为 HTML、Word、PDF 等格式的文档。这些转换既可以通过你正在使用的 Markdown 编辑器完成,也可以通过一些命令行工具(如 Pandoc、Gitbook)来完成,甚至可以用你熟悉的语言编程实现。 这个部分主要介绍通过编辑器或命令行工具来实现 Markdown 文档到下列格式的转换: HTML PDF Word

  • 当尝试将字符串解析为日期或时间时,如果字符串格式与指定的格式不匹配,会抛出DateTimeParseException 异常。 问题是必现,复现代码如下:

  • 问题内容: 我正在尝试为Android编写小型gmail客户端作为培训。我从https://developers.google.com/gmail/api/quickstart/android上获取了gmail api指南示例,对其进行了一些修改,以获取带有标题和正文的消息。我将范围设置为并编辑了主要请求功能,如下所示: 但是我总是 我尝试了不同的范围配置,但似乎服务范围始终设置为 问题答案: 这

  • 问题内容: 我收到以下错误: 但是我看不到哪个参数错误? 这是我使用的代码。 我已经添加并删除了,但出现了相同的错误。 问题答案: 您将月份和日期交换了: 否则将永远不会适合month参数的范围。 随着并以正确的顺序解析的工作原理: 您无需添加;可以正确解析较短的数字: