2009-07-20 7 views
1

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

Мой код:

//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 
} 

ответ

2

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

8

Для примера: out.write (productID + "" + productDescription + "" + String.format ("%. 2f", productPrice));

+1

+1 для показа полезного примера –

+1

+1 для начинающих Java – OutputLogic