Как проверить наличие значения в массиве для конкретной строки, найденной в другом массиве?

#java #eclipse

#java #eclipse

Вопрос:

Мне нужно использовать входные данные из того, что пользователь ввел в Java Scanner, а затем выяснить, принимается ли этот конкретный ввод как часть проверки, если в инвентарном массиве достаточно. Также конкретное значение массива int inventory должно совпадать с массивом string items . Например, для элемента «Отвертка» есть количество 500.

Это программа для домашнего задания, и я застрял на шаге, где мне нужно выяснить, сколько элементов пользователь хочет купить. Если введенная сумма больше, чем в int[] inventory, я должен сообщить об этом пользователю и выйти из программы. Но если у меня достаточно запасов, я должен показать окончательную сумму счета. Я думаю, что мне удалось правильно запросить у пользователя, сколько они хотят, но я застрял на использовании этой информации для моего следующего метода. До сих пор мне удалось заставить работать только purchaseAmount, но я не могу определить finalBillAmount . Что я делаю неправильно?

 String[] items = {"Hammer", "Wrench", "Pliers", "Saw", "ScrewDriver" };
    double[] prices = {1.99, 2.99, 3.99, 4.99, 5.99};
    int[] inventory = {100, 200, 300, 400, 500};

    String itemAsked = askUserForItem(items);
    String itemInfo = showItemInfo(items, prices, inventory, itemAsked);
    int itemAmount = purchaseAmount(items, inventory, itemAsked, itemInfo);
    int finalAmount = finalBillAmount(items, inventory, itemAsked, itemInfo, itemAmount);

private static int purchaseAmount(String[] items, int[] inventory, String itemAsked,
        String itemInfo) {
    int itemAmount = 0;
    Scanner myS = new Scanner(System.in);
    System.out.printf("nHow many would you like to purchase? -> ");
    itemAmount = myS.nextInt();
    return itemAmount;
}
  

Я ожидаю, что на выходе будет показана доступная сумма и указана окончательная сумма счета: «Ваш общий счет составляет: $ % s». Кроме того, если элементы недоступны, вывод должен быть «Извините, у нас есть только Inventory: %s of Item: %s»

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

1. Есть ли у вас определенные требования к назначению, которые означают, что вы делаете это так, в отличие от создания объектов для представления инструментов и их цен / запасов?

2. Мы еще не начали с объектов.

3. Затем вам нужно передать индекс элемента, выбранного пользователем, и использовать его, чтобы получить цену количество, затем, если количество не превышает запас, умножьте два и верните это.

Ответ №1:

Я помогу с логикой и оставлю остальное вам. Что касается метода: finalBillAmount(items, inventory, itemAsked, itemInfo, itemAmount); мы видим, что у нас есть множество параметров для работы. Для начала мы структурируем цикл for, чтобы увидеть, в каком индексе находится элемент по отношению к массиву элементов.

 int index = 0;
for(int i = 0;i<items.length;i  ){
     if(itemAsked.equals(items[i]){
          index = i;
}
  

Далее мы сравниваем количество запрошенных предметов с количеством в инвентаре:

 if(itemAmount>inventory[index]){
     System.out.println("Sorry, we don't have that many of " item[index]);
     return 0;
}
else{

//I would need to see how your showItemInfo method works in order to compute the bill.
}
  

Надеюсь, это поможет!