Пытаюсь понять, как передать данные объекта массива в отдельный метод

#java #arrays #methods

Вопрос:

Я хотел написать программу, которая записывает инвентарь бара, поскольку я бармен. Я не могу понять, как передать liquorCost liquorCount данные и в GetCostTotal() метод ниже main() метода. Я абсолютно уверен, что это что-то довольно простое, что я делаю неправильно, но я просто не могу этого понять. Любая помощь будет признательна.

Мой Liquor класс отдельный, и я могу опубликовать это, если необходимо, но я не думаю, что проблема в классе, он извлекает входные данные из массива в отдельный метод.

 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 lt; 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 lt; inv.length; i  ) {   costTotal  = (liquorCost * liquorCount);  }  return costTotal;  } }  

Ответ №1:

попробуйте это

 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 lt; 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 lt; inv.length; i  ) {   costTotal  = (inv[i].getLiquorCost() * inv[i].getLiquorCount());  }  return costTotal;  }   

Комментарии:

1. Эй, это сработало! Большое вам спасибо!

Ответ №2:

Давайте разберемся, что здесь пошло не так.
Взгляните на то, как вы пытаетесь вызвать GetCostTotal() метод.

double costTotal = GetCostTotal(ликер[] inv, двойная стоимость ликера, двойное количество ликеров);

Это неверно. Синтаксис/способ, которым вы вызываете метод, фактически используется, когда мы определяем метод. Как это сделал ты:

публичный статический двойной GetCostTotal(ликер[] inv, двойной ликеро-водочный, двойной ликеро-водочный) {}

Ваш звонок должен быть таким:

двойной итог затрат = GetCostTotal(inv);

Здесь мы передаем только inv потому, что данные для liquorCost и liquorCount доступны внутри «каждого» элемента массива inv .
Теперь вы можете принять этот аргумент в GetCostTotal методе. Здесь, когда вы выполняете итерацию с использованием цикла for, вы можете прочитать необходимые вам данные как inv[i].getLiquorCost() и inv[i].getLiquorCount() .

Я предлагаю вам прочитать больше об определении метода и вызове метода на java.

Комментарии:

1. спасибо вам за обратную связь. Я понимаю ошибки, которые я совершил на этом этапе, и сделал несколько шагов в своем понимании массивов и методов. Спасибо!

2. Рад помочь 🙂 Я был бы очень признателен, если бы вы могли прокомментировать комментарий или принять его в качестве ответа.

3. к сожалению, похоже, что мне нужен представитель в 15 человек, чтобы проголосовать, а другой парень уже принял мой ответ. Я обязательно вернусь и проголосую, как только у меня будет репутация! прости!

Ответ №3:

Ответ дан выше. В итоге он был изменен на 2d-массив и передан методу.

Комментарии:

1. Вам не нужно писать ответ только для того, чтобы указать, что другой ответ решил вашу проблему. Если вы хотите, вы можете отредактировать свой ответ, чтобы предоставить подробную информацию о том, как именно вы решили проблему (при условии, что она не идентична другому ответу).