有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    您只需创建一个List<String> productsOrdered = null;并在构造函数中初始化它

    if("y".equalsIgnoreCase(line)){
                productsOrdered = new ArrayList<String>();
            OpenOrder();
                }
    

    因此,每当你收到新订单时,它都会被重新初始化

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

    现在将这些值添加到列表中

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

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

    for(String prodOrdered : productsOrdered){
                System.out.println(prodOrdered);
            }
    
  3. # 3 楼答案

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

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

    Add函数向其中添加产品和数量。 另一个功能是打印要显示的内容