Решение задачи про покупки товаров. Тема одномерных массивов

167
29 марта 2022, 23:10

Подскажите пж вчем ошибка ...

На выходе должно получатся примерно так:

Список возможных товаров для покупки
1. Молоко
2. Хлеб
3. Гречневая крупа
Выберите товар и количество или введите `end`
1 10 <enter>
Выберите товар и количество или введите `end`
3 1 <enter>
Выберите товар и количество или введите `end`
end <enter>
Ваша корзина:
Наименование товара   Количество  Цена/за.ед  Общая стоимость
Молоко                10          60          600
Гречневая крупа       1           50          50
                                  Итого       650

Моя попытка решения :

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        int productNumber =0;
        int productCount = 0;

        Scanner scanner = new Scanner(System.in);
        String[] products = new String[]{"Хлеб", "Яблоки", "Молоко"};
        int[] prices = new int[]{100, 200, 300};
        String[] itemName = new String[3];
        int[] itemAmount = new int[3];
        int[] itemPrice = new int[3];
        int[] itemTotalPrice = new int[3];
        System.out.printf("%s %9s %6s", "Number", "Name", "Price");
        System.out.println("");
        for (int i = 1; i <= 3; i++) System.out.printf("%3s %12s %4d\n", i, products[i - 1], prices[i - 1]);

        int TotalPrice;
        while (true) {
            System.out.println("Выберите товар и количество или введите `end`");
            String type = scanner.next();
            if ("end".equals(type)) break;
            try {
                productNumber = Integer.parseInt(type);
            } catch (NumberFormatException e) {
                System.out.println("Введите целое число");
            }
            System.out.println("Ваша корзина:");
            System.out.printf("%s %9s %6s %s\n", "Наименование товара", "Количество", "Цена/за.ед", "Общая " +
                    "стоимость");
            System.out.println("");
            break;
            //TODO
            String[] parts = type.split(" ");
            productNumber = Integer.parseInt(parts[0]);
            productCount = Integer.parseInt(parts[1]);
            int totalPrice = prices[productNumber] * productCount;
            System.out.println("");
            System.out.printf("%s %9s %6s %s\n",products[productNumber-1], productCount, prices[productCount-1],
                    totalPrice );
        }
        System.out.printf("%s %s", "Итого:", "  ");
    }
}
Answer 1

Вот так в итоге получилось. Спасибо добрым людям , подсказали. На данной платформе только "-" понаставили... Возможно кому то пригодится ответ.

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] products = new String[]{"Хлеб  ", "Яблоки", "Молоко"};
        int[] prices = new int[]{100, 200, 300};
        int[] sum = new int[]{0, 0, 0};
        int[] count = new int[]{0, 0, 0};
        int productNumber = 0;
        int productCount = 0;
        int sumProducts = 0;
        for (int i = 0; i < products.length; i++) {
            System.out.println((i + 1) + ". " + products[i] + " - " + prices[i]);
        }
        while (true) {
            System.out.println("Введите номер товара или end для выхода из программы");
            String input = scanner.nextLine();
            if ("end".equals (input))  {
                break;
            }
            try {
                String[] split = input.split(" ");
                String a = split[0];//до пробела, чтобы получить номер продукта
                productNumber = Integer.parseInt(a) - 1;
                String b = split[1];//после пробела, чтобы получить количество
                productCount = Integer.parseInt(b);
                sum[productNumber] = prices[productNumber] * productCount;
                count[productNumber] = productCount;
            } catch (NumberFormatException e) {
                System.out.println("Введите целое число");
                continue;
            }
            if (productNumber > products.length){
                System.out.println("Вы ввели неверный номер товара");
                continue;
            }
        }
        System.out.println(" ");
        System.out.println("Ваша корзина:");
        System.out.println("--------------------------------------------------------------------");
        System.out.printf("%s %9s %6s %s\n", "Наименование товара | ", "Количество | ", "Цена/за.ед | ", "Общая " +
                "стоимость");
        System.out.println("--------------------------------------------------------------------");
        for (int i = 0; i < 3; i++) {
            if (count[i] != 0) {
                System.out.printf("%s %19s %15s %14s\n", products[i], count[i], prices[i],
                        sum[i]);
            }
            sumProducts += sum[i];
        }
        System.out.println("--------------------------------------------------------------------");
        System.out.printf("%57s %d", "Итого: ", sumProducts);
        System.out.println(" ");
        System.out.println("Программа завершена.");
    }
}
READ ALSO
Intellij IDEA и java компилятор

Intellij IDEA и java компилятор

Получается, когда мы работаем в IDEA, то компилятор, будем говорить, отрабатывает еще в процессе написания кода, так? А когда мы запускаем код,...

158
В XML файле не прописывается путь к классу

В XML файле не прописывается путь к классу

При прописке в XML пути для бина выдает ошибку cannot resolve class or packageДа и при создании конструктора тоже ругается

92
Метод clone(); для массивов

Метод clone(); для массивов

Можно ли где-то посмотреть исходники (как реализован метод) clone() для массива?

100