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

Time:11-13

Alright guys, I'm brand new to java and programming and have been able to get the homework assignments for my class done. But I need to create a program for my final project. This is just the start of it, but I decided 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;
}

}

CodePudding user response:

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

CodePudding user response:

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.

  • Related