user17400890
user17400890

Reputation:

Trying to figure out how to pass array object data to a separate method

I wanted to write a program that records bar inventory as I'm a bartender. I can't figure out how to pass the liquorCost and liquorCount data to the GetCostTotal() method below the main() method. I'm absolutely sure it's something fairly straightforward that I'm doing incorrectly but I just can't figure it out. Any help is appreciated.

My Liquor class is separate and I can post that if necessary but I don't think it's the class that's giving me the problem, it's retrieving the data input from the array to the separate method.

package inventory;
import java.util.Scanner;

public class Inventory {

    public static void main(String[] args)  {
        System.out.println("How many bottles are you taking inventory of?: ");
        Scanner keyboard = new Scanner(System.in);
        int size = keyboard.nextInt();
        Liquor[] inv = new Liquor[size];
        
        for (int i = 0; i < inv.length; i++)  {
            inv[i] = new Liquor();
            System.out.println("Enter product name: ");
            inv[i].setLiquorName(keyboard.next());
            System.out.println("Enter the count for the product: ");
            inv[i].setLiquorCount(keyboard.nextDouble());
            System.out.println("Enter the cost for the product: ");
            inv[i].setLiquorCost(keyboard.nextDouble());
        }
        
        System.out.println("The sitting inventory cost of these products is: ");
        //double totalCost = 0
        for (Liquor inv1 : inv) {
            System.out.println(inv1.getLiquorName() + ": $" + inv1.getLiquorCost() * inv1.getLiquorCount());
        }
        
        double costTotal = GetCostTotal(Liquor[] inv, double liquorCost, double liquorCount);        
        System.out.println("The total cost of the inventory is: " 
            + costTotal);
        
        System.exit(0);
        
    }
    
    public static double GetCostTotal(Liquor[] inv, double liquorCost, double liquorCount)  {
        double costTotal = 0;
        for ( int i = 0; i < inv.length; i++)   {  
            costTotal += (liquorCost * liquorCount);
        }
        return costTotal;
    }
}

Upvotes: 0

Views: 64

Answers (2)

Preet
Preet

Reputation: 146

Lets understand what went wrong here.
Take a look at how you are trying to call the GetCostTotal() method.

double costTotal = GetCostTotal(Liquor[] inv, double liquorCost, double liquorCount);

This is incorrect. The syntax/way you are calling the method is actually used when we what to define a method. Like you did:

public static double GetCostTotal(Liquor[] inv, double liquorCost, double liquorCount) {}

Your call should be like:

double costTotal = GetCostTotal(inv);

Here, we are passing only inv because the data for liquorCost and liquorCount is available inside "each" element of array inv.
Now you can accept this argument in GetCostTotal method. Here as you are iterating using a for loop, you can read the data you needed as inv[i].getLiquorCost() and inv[i].getLiquorCount().

I suggest you can read more on defining a method and calling a method in java.

Upvotes: 0

Ben C
Ben C

Reputation: 91

try this

    public static void main(String[] args)  {
        System.out.println("How many bottles are you taking inventory of?: ");
        Scanner keyboard = new Scanner(System.in);
        int size = keyboard.nextInt();
        Liquor[] inv = new Liquor[size];
        
        for (int i = 0; i < inv.length; i++)  {
            inv[i] = new Liquor();
            System.out.println("Enter product name: ");
            inv[i].setLiquorName(keyboard.next());
            System.out.println("Enter the count for the product: ");
            inv[i].setLiquorCount(keyboard.nextDouble());
            System.out.println("Enter the cost for the product: ");
            inv[i].setLiquorCost(keyboard.nextDouble());
        }
        
        System.out.println("The sitting inventory cost of these products is: ");
        //double totalCost = 0
        for (Liquor inv1 : inv) {
            System.out.println(inv1.getLiquorName() + ": $" + inv1.getLiquorCost() * inv1.getLiquorCount());
        }
        
        double costTotal = GetCostTotal(inv);
        System.out.println("The total cost of the inventory is: " 
            + costTotal);
        
        System.exit(0);
        
    }
    
    public static double GetCostTotal(Liquor[] inv)  {
        double costTotal = 0;
        for ( int i = 0; i < inv.length; i++)   {  
            costTotal += (inv[i].getLiquorCost() * inv[i].getLiquorCount());
        }
        return costTotal;
    }

Upvotes: 1

Related Questions