Raznish Smith Raznish Smith - 7 months ago 20
Java Question

Find the length of an arraylist when the arraylist is located in a different Class

So I'm trying to find out the length of an arraylist, but the arraylist is being stored in a different class, how am I able to fix this.

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";


//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("===============================================");

while(n!=5)// Exits the program when 4 is pressed
{
System.out.print("\n Please enter option 1-4 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();
continue;
}
else
{
System.out.println("There is no store under this name. Please try again.");
}

}

}
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.size());

}
}
}


so that code above is for where I want the length to be displayed.

this code is where the arraylist is populated.

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);
}


and finally the following code is in a file called Store.java, this is where the arraylist is.

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 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;
}

}

Answer

You need to define a getter method inside your Store class to access the size of list

/*your list reference has a size() method that you can call to get the size of list in store class and can access that via a getter */
public int getProductListSize(){

return ProductList.size();
}

Also in your any other class where you have store class reference you can access it easily like

store. getProductListSize();
Comments