SSD3-exercise1

import  java.io.*;
import  java.util.*;


/* DOCUMENT THIS CLASS */
public class ShoppingCartApplication  {

    private static BufferedReader  stdIn =
        new  BufferedReader(new  InputStreamReader(System.in));
    private static PrintWriter  stdOut =
        new  PrintWriter(System.out, true);
    private static PrintWriter  stdErr =
        new  PrintWriter(System.err, true);

    private ShoppingCart cart;

    /* DOCUMENT THIS PUBLIC METHOD */
    public static void main(String[]  args) throws IOException  {

        ShoppingCartApplication application = new  ShoppingCartApplication();

        application.run();
    }

    private void run() throws IOException  {

        cart = new  ShoppingCart();

        int  choice = getChoice();

        while (choice != 0)  {

            if (choice == 1)  {
                cart.addProduct(readProduct());
            } else if (choice == 2)  {
                stdOut.println(cart.toString());
            } else if (choice == 3)  {
                stdOut.println(cart.getTotalValue());
            }

            choice = getChoice();
        }
    }

    private int  getChoice() throws IOException  {

        do  {

            int input;

            try  {
                stdErr.println();
                stdErr.print("[0]  Quit/n"
                             + "[1]  Add Product/n"
                             + "[2]  Display Products/n"
                             + "[3]  Display Total/n"
                             + "choice>");
                stdErr.flush();

                input = Integer.parseInt(stdIn.readLine());

                if (0 <= input && 3 >= input)  {

                    return  input;

                } else {
                    stdErr.println("Invalid choice:  " + input);
                }
            } catch (NumberFormatException  nfe)  {
                stdErr.println(nfe);
            }
        }  while (true);
    }

    private Product readProduct() throws IOException {

        final String DELIM = "_";

        String name = "";
        int quantity = 0;
        double price = 0.0;

        /* PLACE YOUR CODE HERE */
       
        boolean trueValue=false;
        do{
            trueValue=false;
            stdErr.print("product [name_qty_price]> ");
            stdErr.flush();
            String inputProduct=stdIn.readLine();
            StringTokenizer st=new StringTokenizer(inputProduct,"_");
            if(st.countTokens()==3){
                name=st.nextToken();
                try{
                    quantity=Integer.parseInt(st.nextToken());
                }catch(NumberFormatException e){
                    stdErr.println(e);
                    trueValue=true;
                }finally{
                    if(quantity<=0){
                        stdOut.println("invalid input");
                        trueValue=true;   
                    }
                }
                try{
                    price=Double.parseDouble(st.nextToken());
                }catch(NumberFormatException e){
                    stdErr.println(e);
                    trueValue=true;
                }finally{
                    if(price<0){
                        stdOut.println("invalid input");
                        trueValue=true;
                    }
                }
            }else{
            stdOut.println("invalid iunput");
            trueValue=true;
         }
         
        }while(trueValue);

        return new Product(name, quantity, price);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值