2013-11-06 2 views
0

Мне нужно сделать квитанцию, отформатированную, насколько мне может понравиться обычная квитанция. С именем и адресом, временем и датой все наверху. (Все из которых должны быть введены пользователем.)CSC java Квитанция

основной код

//Removed Imports 

class ReceiptCode { 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     //Font f = new Font("Calibri", Font.BOLD, 20); 

     Scanner scan= new Scanner(System.in); 
     System.out.println("Enter Company Name"); 
     String companyName= scan.nextLine(); 

     System.out.println("Enter STREET ADDRESS"); 
     String street=scan.nextLine(); 

     System.out.println("Enter CITY, STATE, ZIP"); 
     String CSZ=scan.nextLine(); 


     String breaker = "------------------------------"; 
     List <Items> invList = new ArrayList<Items>(); 
     System.out.println("How many items did you order?"); 
     int counter = scan.nextInt(); 
     double totalPrice = 0; 
     for (int i=0; i<counter; i++) 
     { 
      System.out.println("Name the item"); 
      String fName = scan.next(); 
      System.out.println("How many of this item did you order?"); 
      int fType = scan.nextInt(); 
      System.out.println("What was the price?"); 
      double fPrice = scan.nextDouble(); 
      Items inv = new Items(fName, fType, fPrice); 
      double x = (fType * fPrice); 
      totalPrice += x; 
      invList.add(inv); 
      System.out.println(totalPrice); 
     } 

     DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); 
     DateFormat timeFormat = new SimpleDateFormat ("HH:mm"); 
     Date date = new Date(); 
     Date time = new Date(); 
     System.out.printf("%-15s %n", companyName); 
     System.out.printf("%-15s %14s %n",street + "\n" + CSZ,dateFormat.format(date)); 
     System.out.printf("%-15s %14s %n", timeFormat.format(time)); 
     System.out.println(breaker); 
     for (Items c : invList) { 
       System.out.println (c.getFoodAmmount() + " x " + c.getFoodName() + " : " + c.getFoodPrice() + "$"); 
       System.out.println (breaker); 

} 
} 
}  

Это класс для моих элементов массива List

ArrayList

package Receipt; 

public class Items { 

     private String foodName; 
     private int foodAmmount; 
     private double foodPrice; 

    public Items (String fdType, int fdAmmount, double fdPrice) 
    { 
     foodName = fdType; 
     foodAmmount = fdAmmount; 
     foodPrice = fdPrice; 
    } 
    public String getFoodName() 
    { 
     return foodName; 
    } 
    public int getFoodAmmount() 
    { 
     return foodAmmount; 
    } 
    public double getFoodPrice() 
    { 
     return foodPrice; 
    } 
} 

Когда Я компилирую код, я получаю исключение: Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier '14s'. Как я могу решить эту проблему?

+1

Итак ... в чем ваш вопрос или проблема? –

ответ

0

Вы получаете исключение, потому что на строке времени вы не устанавливаете% 14s (она не может найти переменную в инструкции printf).

System.out.printf("%-15s %14s %n", timeFormat.format(time)); 

Эта строка содержит ошибки. Если вы измените его на:

System.out.printf("%-15s %n", timeFormat.format(time)); 

Он должен работать правильно.