#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. Вам не нужно писать ответ только для того, чтобы указать, что другой ответ решил вашу проблему. Если вы хотите, вы можете отредактировать свой ответ, чтобы предоставить подробную информацию о том, как именно вы решили проблему (при условии, что она не идентична другому ответу).