1

我正在处理一项任务,并且已经完成了代码,但是我遇到了输出格式正确的问题。我正在获取一个文本文件,根据价格分隔产品,并将数据附加到两个单独的文件中。如何使用 BufferedWriter 使 double 的格式正确,使其显示为没有美元符号的货币值 (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
}
4

3 回答 3

9

例如:

out.write(productID + " " + productDescription + " " + 
String.format("%.2f",productPrice) );
于 2009-07-20T11:30:06.143 回答
2

使用String.format(pattern, args). 这使您可以轻松地为双打等项目指定格式规则。这是一个相当复杂的方法,因此请阅读 javadocs 以了解它是如何工作的。

于 2009-07-20T11:25:36.167 回答
1

看看DecimalFormat

于 2009-07-20T11:28:01.730 回答