Форматирование двойного вывода с использованием BufferedWriter в Java - PullRequest
1 голос
/ 20 июля 2009

Я работаю над заданием и выполнил код, однако у меня возникла проблема с правильным форматированием вывода. Я беру текстовый файл, разделяю продукты по цене и добавляю данные в два отдельных файла. Как мне сделать правильный формат двойного с помощью BufferedWriter, чтобы он отображался в денежном выражении (0,00) без знака доллара? В настоящее время выводится как (0.0). Спасибо за вашу помощь.

Мой код:

//import the io utilities and scanner
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.util.Scanner;


/**
 * class ProductData uses the scanner utility to read a file, FileWriter and
 * BufferedWriter to write data from original file to two new files
 * based on the product price.
 */
public class ProductData
{
    /**
     * method main calls the scanner to read a file, uses a while loop
     * to scan through the file until done, and uses two if loops
     * to determine the price and append the data to two new files.
     * @param args
     * @throws java.io.FileNotFoundException
     */
    public static void main(String[] args) throws FileNotFoundException
    {


        //create a scanner, call the file to be read
        Scanner reader = new Scanner(new File("products.txt"));

        //variables defined
        int productID;
        String productDescription;
        double productPrice;


        //while loop to read each line in the file
        while (reader.hasNext())
        {
            //retrieves each item in order using the next feature of the scanner
            productID = reader.nextInt();
            productDescription = reader.next();
            productPrice = reader.nextDouble();

            //if loop for price greater than or equal to 50.00
            if(productPrice >= 50.00)
            {
                try
                {
                    // Create file
                    FileWriter fstream = new FileWriter("WishList.txt",true);
                    //create BufferedWriter to write data to the file
                    BufferedWriter out = new BufferedWriter(fstream);
                    //writes data and blank line to file
                    out.write(productID + " " + productDescription + " " + productPrice );
                    out.newLine();
                    //Close the output stream
                    out.close();
                }

                catch (Exception e)
                {
                    //Catch exception if any
                    System.err.println("Error: " + e.getMessage());
                }

            }

            //if loop for price less than 50.00
            if(productPrice < 50.00)
            {
                try
                {
                    // Create file
                    FileWriter fstream = new FileWriter("GiftIdeas.txt",true);
                    //creates BufferedWriter to write data to file
                    BufferedWriter out = new BufferedWriter(fstream);
                    //writes data and blank line to file
                    out.write(productID + " " + productDescription + " " + productPrice );
                    out.newLine();
                    //Close the output stream
                    out.close();
                }

                catch (Exception e)
                {
                    //Catch exception if any
                    System.err.println("Error: " + e.getMessage());
                }

            }//ends if loop
        }//ends while loop
    }//ends method main
}

Ответы [ 3 ]

9 голосов
/ 20 июля 2009

Например:

out.write(productID + " " + productDescription + " " + 
String.format("%.2f",productPrice) );
2 голосов
/ 20 июля 2009

Используйте String.format(pattern, args). Это позволяет вам легко указывать правила форматирования для таких элементов, как double. Это довольно сложный метод, поэтому прочитайте его, чтобы узнать, как он работает.

1 голос
/ 20 июля 2009

Посмотрите на DecimalFormat .

...