В моей программе есть 2 магазина Callahan и Lambton, в текущем коде, который у меня есть, есть только один список массивов. У меня вопрос: есть ли способ сохранить один Arraylist, но сделать его отдельным, когда пользователь вводит другое имя магазина? Следующий код - это система меню, которая вызывает размер массива и отображает его.

import java.util.Scanner;
import java.util.*;
import java.util.ArrayList;

public class StarberksInterface
{


public static void main(String args[])
{

    Scanner console = new Scanner(System.in);
    store = new Store();
    String str, sName1, sName2, name;
    char c;
    int n=0;
    sName1 = "Callahan";
    sName2 = "Lambton";



    while(n!=5)// Exits the program when 5 is pressed
        {

            //This is the main menu that will be displayed first.
            System.out.println("       MAIN MENU FOR MANAGEMENT SYSTEM");
            System.out.println("===============================================");
            System.out.println("1. CHOOSE STORE");
            System.out.println("2. DISPLAY STORES");
            System.out.println("3. LOAD STORE VIA FILE");
            System.out.println("4. SAVE STORE TO FILE ");
            System.out.println("5. EXIT PROGRAM");
            System.out.println("===============================================");

            System.out.print("\n Please enter option 1-5 to continue...: ");
            n = Integer.parseInt(System.console().readLine());
            // Reads user input and takes them to selected code.
            if (n>5||n<1)
            {
                System.out.print("Invalid input, please try again...");
                continue;
            }
            if (n==1)// Takes to option 1 or sub menu
            {
                str="y";

                while(str.equals("y")||str.equals("Y"))
                {
                    System.out.println("Enter a store name [Callahan or Lambton] ");
                    name = console.next();
                    if (sName1.equals(name)|| sName2.equals(name))
                    {
                        StarberksInterface.subMenu();
                        break;

                    }

                    else 
                    {
                        System.out.println("There is no store under this name. Please try again.");
                    }

                }
                continue;
            }
            if (n==2)// Gathers products in stores and displays the number of products
            {
                System.out.println(" Store data is being displayed.");
                System.out.println("===============================");
                System.out.println("Store: Callahan");
                System.out.println("       Number of products: "+store.getProductListSize());
                System.out.println("===============================\n");
                System.out.println("Store: Lambton");
                System.out.println("       Number of Products: "+store.getProductListSize());
                System.out.println("===============================\n");

            }
        }
}




 public static void subMenu()
 {
Scanner console = new Scanner(System.in);
String str;
char c;
int n=0;


        // this will be the sub menu that gets displayed.
        System.out.println("        INVENTORY MANAGEMENT SYSTEM");
        System.out.println("===============================================");
        System.out.println("1. ADD PRODUCT DATA");
        System.out.println("2. VIEW SINGLE PRODUCT DATA");
        System.out.println("3. DELETE PRODUCT");
        System.out.println("4. DISPLAY ALL PRODUCTS IN STORE");
        System.out.println("===============================================");
        System.out.println("5. EXIT SUB MENU");

        while(n!=5)// Exits the program when 4 is pressed
        {
            System.out.print("\n Please enter option 1-5 to continue...: ");
            n = Integer.parseInt(System.console().readLine());
            // Reads user input and takes them to selected code.
            if (n>5||n<1)
            {
                System.out.print("Invalid input, please try again...");
                continue;
            }
            if (n==1)// Takes to option 1 or addItem()
            {
                str="y";
                while(str.equals("y")||str.equals("Y"))
                {

                    StarberksInterface.addItem();
                    System.out.print("Would you like to enter another product ? (Y or N) : ");
                    str = console.next();
                }   
                continue;
            }
            if (n==2)// Takes to option 2 or prodData
            {
                str="y";
                while(str.equals("y")||str.equals("Y"))
                {
                    StarberksInterface.prodData();
                    System.out.println("\n***************************************************\n");
                    System.out.print("Stay viewing this page? (Y or N) ");
                    str = console.next();

                }
                continue;
            }

            if (n==3)// Takes to option 3 or delete item
            {
                System.out.print("Delete a product");
                continue;
            }

            if (n==4)// Takes to option 4 or view all products in store
            {
                System.out.print("Displaying all products in store");
                continue;
            }
        }
            if (product != null)// If there is information on the system
            // then the user will have the option to view data, before the program quits
            {
                System.out.println("\n***************************************************\n");
                System.out.println("\nAre you sure you want to quit? There is information stored on a product. ");
                System.out.println("\nWould you like to view if information? (Y / N) ");
                str="";
                str = console.next();
                while(str.equals("y")||str.equals("Y"))
                {

                    StarberksInterface.prodData();
                    return;
                }

            }

            else
            {
                System.out.print("\nThank you for using this inventory management software.\n");
                System.out.print("Developed by Xavier Edwards");
                System.out.println("\n***************************************************\n");
            }
 }

Следующий код - это то, где заполняется Arraylist.

public static Product product;
public static Store store;
// Where the user inputs the data for the item
public static void addItem ()
{
    Scanner console = new Scanner(System.in);
    product = new Product();// initiates the product and store to being empty.


    String desc, id, str="";
    double price = 0, sUpPrice = 0, unitCost = 0, inventoryCost = 0;
    int stock = 0, demand = 0;


        System.out.print("Please enter product description between 3 to 10 characters...: ");
        desc = console.next();
        desc = desc.toLowerCase();
        product.setName(desc);


        if ((desc.length() < 3 || desc.length() > 10))
        {
            System.out.println("\nThis Input is incorrect. Please make description between 3 to 10 characters.\n");
            System.out.println("Try again with different input. ");
            System.out.println("\n*****************************************\n");
            StarberksInterface.addItem();
        }

        System.out.print("Please enter price in $ : ");
        price = console.nextDouble();
        product.setPrice(price);

        if (price < 0)
        {
            System.out.println("\nThis Input is incorrect. Please make sure attributes are positve numbers\n");
            System.out.println("Because of incorrect input, program will restart. ");
            System.out.println("\n*****************************************\n");
            StarberksInterface.addItem();
        }

        System.out.print("Please enter set up price. $ : ");
        sUpPrice = console.nextDouble();
        product.setsUpPrice(sUpPrice);

        if (sUpPrice < 0)
        {
            System.out.println("\nThis Input is incorrect. Please make sure attributes are positve numbers\n");
            System.out.println("Because of incorrect input, program will restart. ");
            System.out.println("\n*****************************************\n");
            StarberksInterface.addItem();
        }

        System.out.print("Please enter unit- cost. $ : ");
        unitCost = console.nextDouble();
        product.setunitCost(unitCost);

        if (unitCost < 0)
        {
            System.out.println("\nThis Input is incorrect. Please make sure attributes are positve numbers\n");
            System.out.println("Because of incorrect input, program will restart. ");
            System.out.println("\n*****************************************\n");
            StarberksInterface.addItem();
        }

        System.out.print("Please enter the inventory cost. $ : ");
        inventoryCost = console.nextDouble();
        product.setinvCost(inventoryCost);

        if (inventoryCost < 0)
        {
            System.out.println("\nThis Input is incorrect. Please make sure attributes are positve numbers\n");
            System.out.println("Because of incorrect input, program will restart. ");
            System.out.println("\n*****************************************\n");
            StarberksInterface.addItem();
        }

        System.out.print("Please enter the amount in stock : ");
        stock = console.nextInt();
        product.setstock(stock);

        if (stock < 0)
        {
            System.out.println("\nThis Input is incorrect. Please make sure attributes are positve numbers\n");
            System.out.println("Because of incorrect input, program will restart. ");
            System.out.println("\n*****************************************\n");
            StarberksInterface.addItem();
        }

        System.out.print("Please enter the demand of the product : ");
        demand = console.nextInt();
        product.setdRate(demand);

        if (demand < 0)
        {
            System.out.println("\nThis Input is incorrect. Please make sure attributes are positve numbers\n");
            System.out.println("Because of incorrect input, program will restart. ");
            System.out.println("\n*****************************************\n");
            StarberksInterface.addItem();
        }

        System.out.println("\n*****************************************\n");
        System.out.print(desc +" Product was added successfully ");
        System.out.println("\n*****************************************\n");
        // stores the item in the array


        //Checks to see if item is already in the list
        /*while (product != null)
        {
            if (product.equals(store.getProduct(desc)))
            {
                System.out.println(desc +" is already a product.");
                System.out.println("Input for data will restart");
                StarberksInterface.addItem();
            }
        }*/

        store.add(product);

}

И этот последний фрагмент кода и есть настоящий массив

import java.util.ArrayList;

public class Store{
// stores the product information in an array list
//allows for numerous products and each can be called in the Starberks Interface
public ArrayList <Product> ProductList = new ArrayList<Product> ();

public Store()
{

}
public int getProductListSize()
{
    return ProductList.size();
}

public void add(Product product)
{   
    // Adds the product and all details entered by user to the list.        
    ProductList.add(product);
}

public Product getProduct(String prodName) {
    //
    for (int i = 0; i < ProductList.size(); i++) {
            //searches through list of products to find a specific name entered in
            // from the Starberks Interface
        if (ProductList.get(i).getName().equals(prodName)) {
            return ProductList.get(i);
        }
    }
    return null;
   }

  }
0
Raznish Smith 3 Май 2016 в 09:49

4 ответа

Лучший ответ

Создайте два магазина

Store callahan = new Store();
Store lambton = new Store();

Добавьте продукт в соответствующий магазин на основе вашего ввода

  if(storeName.equals("callhan")) {
      callahan.add(product);
  } else {
      lambton.add(product);
  }

Еще лучше вы можете создать карту магазинов.

   Map<String, Store> stores = new HashMap<>();
   stores.put("callahan", new Store());
   stores.put("lambton", new Store()));

И поэтому коды добавления вашего продукта будут

   stores.get(storeName).add(product);
2
mirmdasif 3 Май 2016 в 07:19

Вы хотите разделить ArrayList на 2. К сожалению, если вы хотите сделать что-то подобное, вам нужно будет изучить другую структуру данных. Вместо этого вы можете использовать Map>, чтобы сопоставить каждый ArrayList продуктов с его магазином.

Хотя лучший способ сделать это - использовать более объектно-ориентированный подход и иметь ArrayList внутри класса Store.

0
Aurasphere 3 Май 2016 в 07:33

Вы можете попробовать ArrayList из ArrayList, он не хранит его в одном списке, но должен обладать необходимой гибкостью.

0
Geoff 3 Май 2016 в 07:19

Насколько я понимаю, вы пытаетесь получить продукты из ProductList на основе Store .

Я бы рекомендовал заполнить ProductList вне класса Store в MasterProductsclass . Этот ProductList будет служить основным списком продуктов.

Поэтому всякий раз, когда вы хотите addItem () в Store , вы можете добавить Продукт в ProductList с помощью настраиваемого как метод setStoreHavingProduct и добавьте к нему значение Store name . Перед addItem () проверьте, содержит ли ProductList тот же Продукт и добавляет ли он другие названия магазинов . Итак, ProductList будет содержать все продукты и внутри них все Store , в которых есть этот Продукт .

Таким образом, вы можете окончательно переопределить метод contains из Product List и отобразить только вложенный список на основе Store.

0
mattyman 3 Май 2016 в 07:09