从多个扫描仪输入中获取订购产品的列表

时间:2013-11-19 07:01:03

标签: java

import java.util.*;
public class PointOfSale extends ProductDisplay
{   
    public PointOfSale()
    {   System.out.print("\nPurchase Item(y/n)?");
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        if("y".equalsIgnoreCase(line)){
        OpenOrder();
            }
    }
    //=============================================
    public void OpenOrder() // New Order
    {  
        ArrayList<String> ProductList = new ArrayList<String>();
        ProductList.add("A001");   
        ProductList.add("A002");
        ProductList.add("A003");    
        ProductList.add("A004");
        ProductList.add("A005");
        System.out.print("Select Product Code:");
        Scanner sc = new Scanner(System.in);
        String code = sc.next();
        if(ProductList.contains(code))
        { 
        product.getProduct(code);
          EnterQuantity();      
         }
        else System.out.print("Product Code is Invalid\n"); 
        System.exit(0);}
    //==============================================
    public void EnterQuantity()  //Entering Quantity
    {
        try{
            System.out.print("Enter Quantity:");
            Scanner sc = new Scanner(System.in);
            int quantity = sc.nextInt();
            double amount = quantity * product.getPrice();
            System.out.print("Amount: " + amount);

            //add new item
            System.out.print("\nAdd Item(y/n)?");  
            Scanner sc2 = new Scanner(System.in);
            String add = sc2.nextLine();

            if("y".equalsIgnoreCase(add)){
                OpenOrder();
                    }
            else {
                DisplayOrder();

            }



        }
        catch (InputMismatchException nfe)
            {System.out.print("\nInvalid Entry: Input must be a Number.\n"); System.exit(0);}
    }


    public void DisplayOrder()  //Displaying order information
    {







    }




    // Main Method
    public static void main(String[] args)
    {   new PointOfSale(); }
}

正如您所看到的,您可以在无休止的循环中购买订单。但那些订单没有存储,所以我不能打电话给他们。因为如果你停止订购,应该有某种收据。如何存储这些多个订单并将其显示在DisplayORder

3 个答案:

答案 0 :(得分:0)

您只需创建List<String> productsOrdered = null;并在构造函数

中初始化它即可
if("y".equalsIgnoreCase(line)){
            productsOrdered = new ArrayList<String>();
        OpenOrder();
            }

因此,每当您收到新订单时,都会重新初始化。

现在您可以在用户选择产品代码时或在EnterQuantity方法中更新此列表,因为从这里您也可以保存数量(您只需要在此方法中进行简单更改为public void EnterQuantity(字符串代码)..在调用EnterQuantity时传递代码值。

现在在列表中添加这些值。

productsOrdered.add(code+"-"+quantity);

您可以在DisplayOrder方法中将这些订单显示为

for(String prodOrdered : productsOrdered){
            System.out.println(prodOrdered);
        }

答案 1 :(得分:0)

我厌倦了运行你的代码,答案看起来很简单。

你应该创建一个名为'Order'的新类(可能),它可以将添加的产品和数量存储到该类的Arraylist中。

添加功能以向其添加产品和数量。 打印内容以显示的另一个功能。

答案 2 :(得分:0)

您可以创建一个包含两个字段的新POJO类。产品代码和数量。每次获取产品代码和数量时,使用用户输入的值创建POJO类的实例并将其添加到列表中。在display方法中,从列表中获取类的每个实例并显示内容。