Задача:
Напишите программу, которая считывает список товаров и их цен, а затем выводит товары, цена которых превышает заданное значение. Java.
План:
- Алгоритм решения
- Код программы
- Примеры входных данных и ожидаемых результатов
- Объяснение кода программы
- Блок-схема
Алгоритм решения:
-
Создать класс
Product
с полямиname
иprice
, а также соответствующими геттерами. -
В методе
main
:- Инициализировать
Scanner
для ввода данных - Создать пустой список
products
для хранения объектовProduct
- Инициализировать
-
Ввод данных о товарах:
- Запустить бесконечный цикл
- Считывать строку ввода
- Если введено "done", выйти из цикла
- Разделить строку на части по пробелу
- Если получено две части, создать объект
Product
и добавить его в список
-
Запросить у пользователя минимальную цену (порог)
-
Вывод товаров, превышающих порог:
- Пройти по всем товарам в списке
- Если цена товара больше порога, вывести его название и цену
-
Закрыть
Scanner
Код программы на языке Java:
Код Java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ExpensiveProducts {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Product> products = new ArrayList<>();
System.out.println("Enter products and prices (product price), type 'done' to finish:");
while (true) {
String input = scanner.nextLine();
if (input.equalsIgnoreCase("done")) {
break;
}
String[] parts = input.split(" ");
if (parts.length == 2) {
String name = parts[0];
double price = Double.parseDouble(parts[1]);
products.add(new Product(name, price));
}
}
System.out.print("Enter the minimum price threshold: ");
double threshold = scanner.nextDouble();
System.out.println("Products above " + threshold + ":");
for (Product product : products) {
if (product.getPrice() > threshold) {
System.out.println(product.getName() + " - " + product.getPrice());
}
}
scanner.close();
}
}
class Product {
private String name;
private double price;
public Product(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
Примеры входных данных и ожидаемых результатов:
Входные данные:
Apple 1.50
Banana 0.75
Orange 2.00
Mango 3.50
Pineapple 4.25
done
2.50
Ожидаемый результат:
Products above 2.50:
Mango - 3.5
Pineapple - 4.25
Входные данные:
Laptop 999.99
Mouse 24.99
Keyboard 59.99
Monitor 249.99
Headphones 89.99
done
100.00
Ожидаемый результат:
Products above 100.00:
Laptop - 999.99
Monitor - 249.99
Входные данные:
Book 15.99
Pen 1.99
Notebook 5.99
Backpack 39.99
Calculator 29.99
done
20.00
Ожидаемый результат:
Products above 20.00:
Backpack - 39.99
Calculator - 29.99
Объяснение кода программы:
-
Импорт необходимых классов:
Импортируются классы для работы со списками и ввода данных.import java.util.ArrayList; import java.util.List; import java.util.Scanner;
-
Объявление основного класса:
Создается классpublic class ExpensiveProducts { public static void main(String[] args) { // ... } }
ExpensiveProducts
с методомmain
. -
Инициализация Scanner и списка продуктов:
Создается объектScanner scanner = new Scanner(System.in); List<Product> products = new ArrayList<>();
Scanner
для ввода данных и списокproducts
для хранения продуктов. -
Ввод продуктов и цен:
Цикл считывает ввод пользователя, разбивает его на части и создает объектыSystem.out.println("Enter products and prices (product price), type 'done' to finish:"); while (true) { String input = scanner.nextLine(); if (input.equalsIgnoreCase("done")) { break; } String[] parts = input.split(" "); if (parts.length == 2) { String name = parts[0]; double price = Double.parseDouble(parts[1]); products.add(new Product(name, price)); } }
Product
, добавляя их в список. -
Ввод порогового значения цены:
Пользователь вводит минимальную цену для фильтрации продуктов.System.out.print("Enter the minimum price threshold: "); double threshold = scanner.nextDouble();
-
Вывод продуктов, превышающих пороговое значение:
Цикл перебирает все продукты и выводит те, цена которых выше порогового значения.System.out.println("Products above " + threshold + ":"); for (Product product : products) { if (product.getPrice() > threshold) { System.out.println(product.getName() + " - " + product.getPrice()); } }
-
Закрытие Scanner:
Освобождение ресурсов, связанных с объектомscanner.close();
Scanner
. -
Объявление класса Product:
Определяется классclass Product { private String name; private double price; public Product(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public double getPrice() { return price; } }
Product
с полямиname
иprice
, конструктором и геттерами.