Выходные данные печатающего устройства не принимают форматеры .printf в файл? - PullRequest
0 голосов
/ 11 марта 2019

При выводе в уже установленный файл, используя следующий код:

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.");
    }
}

При использовании модификатора "% .2f" в строке 45 выдается следующее сообщение об ошибке:

java.util.MissingFormatArgumentException: спецификатор формата "% .2f" в java.util.Formatter.format (неизвестный источник) в java.io.PrintWriter.format (неизвестный источник) в java.io.PrintWriter.printf (Неизвестный источник) в BarakProductOrder.main (BarakProductOrder.java:45) в sun.reflect.NativeMethodAccessorImpl.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)

Использую ли я неправильный модификатор на outputFile.printf? Или неправильная строка ".print ()"?

1 Ответ

1 голос
/ 11 марта 2019

Это не так, как printf работает; Вы даете ему формат, а затем вещи для печати.

Вы не передаете ничего для форматирования с %.2f, вы пытаетесь добавить его. Документы содержат информацию о том, как его использовать (и в мире есть много примеров).

Грубо:

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

Хотя я не уверен, почему вы не сделали бы такое же форматирование для qty.

...