简体   繁体   English

Printwriter输出不接受文件的.printf格式器?

[英]Printwriter output not accepting .printf formatters to file?

When outputting to an already established file using the following code: 使用以下代码输出到已建立的文件时:

import java.util.Scanner;
import java.io.*;
public class BarakProductOrder
{
    public static void main(String[] args) throws IOException
    {
        //Establish scanner object
        Scanner input = new Scanner (System.in);

        //Declare variables
        String name, product, street, city, state, zip;
        int qty;
        double price;

        //Collect data
        System.out.println("Welcome to Matt's Dog Food Emporium!\n\nWhat is your name?");
        name = input.nextLine();

        System.out.println("Which product would you like to order today?");
        product = input.nextLine();

        System.out.println("How many would you like?");
        qty = input.nextInt();
        price = 4.56*qty;

        input.nextLine(); //Must be placed to not skip over "address" line

        System.out.println("Enter your street address:");
        street = input.nextLine();

        System.out.println("Enter the City:");
        city = input.nextLine();
        System.out.println("Enter the State (ex.: NY):");
        state = input.nextLine();
        System.out.println("Enter the Zip:");
        zip = input.nextLine();

        System.out.println("Thank you for your order, " + name);

        //Output data to file "BarakOrder.txt"
        PrintWriter outputFile = new PrintWriter("C:\\Users\\fbara\\Desktop\\CISS 110\\BarakOrder.txt");
        outputFile.println("Order Number: 001");
        outputFile.println("Product: " + product);
        outputFile.println("Quantity: " + qty);
        outputFile.printf("Price = 4.56*" + qty + " = $" + "%.2f" + price);
        outputFile.println("Customer Contact Info: " + name);
        outputFile.println("Address: " + street);
        outputFile.println(city + ", " + state + " " + zip);

        //Close scanner and file object
        input.close();
        outputFile.close();
        System.out.println("Data has been written.");
    }
}

Using the "%.2f" modifier at line 45 gives me the following error message: 在第45行使用“%.2f”修饰符会给我以下错误消息:

java.util.MissingFormatArgumentException: Format specifier '%.2f' at java.util.Formatter.format(Unknown Source) at java.io.PrintWriter.format(Unknown Source) at java.io.PrintWriter.printf(Unknown Source) at BarakProductOrder.main(BarakProductOrder.java:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:267) java.util.MissingFormatArgumentException:java.io.PrintWriter.format(未知源)处的java.util.Formatter.format(未知源)处的格式说明符'%.2f',java.io.PrintWriter.printf(未知源)处的格式说明符位于sun.reflect.NativeMethodAccessorImpl.invoke的BarakProductOrder.main(BarakProductOrder.java:45)invoke0(位于sun.reflect.NativeMethodAccessorImpl.invoke(本地方法)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)的java.lang .reflect.Method.invoke(未知源),位于edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:267)

Am I using the wrong modifier at the outputFile.printf ? 我在outputFile.printf使用错误的修饰符吗? Or wrong ".print()" line? 还是错误的“ .print()”行?

That's not how printf works; 那不是printf工作方式。 you give it a format then the things to print. 你给它一个格式,然后打印的东西。

You're not passing anything to format with the %.2f , you're trying to add it. 您没有传递任何要使用%.2f格式化的内容,而是尝试添加它。 The docs provide info on how to use it (and there are many examples in the world). 该文档提供了有关如何使用它的信息(世界上有很多示例)。

Roughly: 大致:

outputFile.printf("Price = 4.56*" + qty + " = $" + "%.2f", price);

Although I'm not sure why you wouldn't do the same formatting for qty . 尽管我不确定为什么您不会对qty进行相同的格式化。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM