Лабораторна робота 6
This commit is contained in:
parent
c27b4fbae5
commit
4409214bef
|
@ -0,0 +1,80 @@
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
|
||||||
|
public class ElectroAppliance {
|
||||||
|
// Поля що містять потужність, електромагнітне випромінювання та назву
|
||||||
|
private int power;
|
||||||
|
private int electromagneticRadiation;
|
||||||
|
private String name;
|
||||||
|
// Статичні поля, які потрібні для зберігання даних про всі об'єкти класу
|
||||||
|
private static int totalPower = 0;
|
||||||
|
private static ArrayList<Integer> sortedPowers = new ArrayList<Integer>();
|
||||||
|
private static ArrayList<String> sortedNames = new ArrayList<String>();
|
||||||
|
private static ArrayList<Integer> electromagneticList = new ArrayList<Integer>();
|
||||||
|
private static ArrayList<String> namesList = new ArrayList<String>();
|
||||||
|
|
||||||
|
|
||||||
|
public ElectroAppliance(int power, int electromagneticRadiation, String name) {
|
||||||
|
// Присвоюємо полям значення
|
||||||
|
this.name = name;
|
||||||
|
this.power = power;
|
||||||
|
this.electromagneticRadiation = electromagneticRadiation;
|
||||||
|
// Додаємо потужність до загальної
|
||||||
|
totalPower = totalPower + power;
|
||||||
|
// Додаємо дані про електромагнітне випромінювання
|
||||||
|
electromagneticList.add(electromagneticRadiation);
|
||||||
|
namesList.add(name);
|
||||||
|
// Відразу в конструкторі сортуємо список з потужностями
|
||||||
|
if (sortedPowers.isEmpty()) {
|
||||||
|
sortedPowers.add(power);
|
||||||
|
sortedNames.add(name);
|
||||||
|
} else {
|
||||||
|
for (int i = sortedNames.size()-1; i>=0; i=i-1) {
|
||||||
|
if(power>sortedPowers.get(i)){
|
||||||
|
sortedPowers.add(i+1, power);
|
||||||
|
sortedNames.add(i+1, name);
|
||||||
|
} else if(i==0&&power<=sortedPowers.get(i)){
|
||||||
|
sortedPowers.add(0, power);
|
||||||
|
sortedNames.add(0, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void printSortedPowers(){
|
||||||
|
for(int i = 0; i<sortedNames.size(); i=i+1){
|
||||||
|
System.out.println(sortedNames.get(i)+": "+ Integer.toString(sortedPowers.get(i))+" Вт");
|
||||||
|
}
|
||||||
|
/** Метод повертає відсортований список приборів по потужності */
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getTotalPower() {
|
||||||
|
return totalPower;
|
||||||
|
/** Метод повертає загальну потужність*/
|
||||||
|
}
|
||||||
|
public static void printDiapasonedElectromagneticRadiation(int[] limits){
|
||||||
|
// Втсановлюємо границі з отриманого списку
|
||||||
|
int top = limits[1];
|
||||||
|
int bottom = limits[0];
|
||||||
|
// Створюємо списки з кінцевими значеннями
|
||||||
|
ArrayList<Integer> wantedElectromagneticRadiation = new ArrayList<Integer>();
|
||||||
|
ArrayList<String> wantedElectromagneticNames = new ArrayList<String>();
|
||||||
|
// Відбираємо потрібні значення
|
||||||
|
for (int i = 0; i<=electromagneticList.size()-1; i=i+1){
|
||||||
|
if(electromagneticList.get(i)<=top&&electromagneticList.get(i)>=bottom){
|
||||||
|
wantedElectromagneticRadiation.add(electromagneticList.get(i));
|
||||||
|
wantedElectromagneticNames.add(namesList.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Виводимо
|
||||||
|
System.out.println("Шуканий список:");
|
||||||
|
for (int i = 0; i<=wantedElectromagneticRadiation.size()-1; i=i+1){
|
||||||
|
System.out.println(wantedElectromagneticNames.get(i)+": " +Integer.toString(wantedElectromagneticRadiation.get(i))+" Вт");
|
||||||
|
}
|
||||||
|
/** Метод шукає значення випромінювання в данному діапазоні і виводить ці значення */
|
||||||
|
}
|
||||||
|
/** Клас елктроприладів, який має може повертати відсортований список приладів по потужності, загальну потужність і
|
||||||
|
* електромагнітне випромінювання в данному діапазоні
|
||||||
|
*/
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
public class HeatingDevices extends ElectroAppliance {
|
||||||
|
// Поля похідного класу Heating Devices
|
||||||
|
private int heatTransfer;
|
||||||
|
private static int totalHeatTransfer = 0;
|
||||||
|
// Конструктор який задає поля і шукає загальне випромінення тепла
|
||||||
|
public HeatingDevices(int heatTransfer, int power, int electromagneticRadiation, String name) {
|
||||||
|
super(power, electromagneticRadiation, name);
|
||||||
|
this.heatTransfer = heatTransfer;
|
||||||
|
totalHeatTransfer = totalHeatTransfer + heatTransfer;
|
||||||
|
}
|
||||||
|
// Повертає загальне випромінення тепла
|
||||||
|
public static int getTotalHeatTransfer() {
|
||||||
|
return totalHeatTransfer;
|
||||||
|
}
|
||||||
|
/** Похідний класу електроприбору, який ще має поле випромінення тепла*/
|
||||||
|
}
|
|
@ -0,0 +1,117 @@
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
import java.util.InputMismatchException;
|
||||||
|
public class Main {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Вмикаємо прибори
|
||||||
|
TurnOn();
|
||||||
|
// Виводимо відомості про систему
|
||||||
|
String totalPower = Integer.toString(ElectroAppliance.getTotalPower());
|
||||||
|
System.out.println("Загальна споживана потужість:" + totalPower + " Вт");
|
||||||
|
String totalWater = Integer.toString(WashingMashines.getTotalWaterConsumption());
|
||||||
|
System.out.println("Загальна споживана вода:" + totalWater + " Л");
|
||||||
|
String totalHeat = Integer.toString(HeatingDevices.getTotalHeatTransfer());
|
||||||
|
System.out.println("Загальне виділення тепла:" + totalHeat + " Дж");
|
||||||
|
String totalMech = Integer.toString(MechanicDevices.getTotalMechanicPower());
|
||||||
|
System.out.println("Загальн механічна потужність:" + totalMech + " Вт");
|
||||||
|
System.out.println("-------------------------");
|
||||||
|
//Виводимо сортовані потужності
|
||||||
|
ElectroAppliance.printSortedPowers();
|
||||||
|
System.out.println("-------------------------");
|
||||||
|
//Виводимо електромагнітні випромінювання в шуканому діапазоні
|
||||||
|
ElectroAppliance.printDiapasonedElectromagneticRadiation(getLimits());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void TurnOn() {
|
||||||
|
|
||||||
|
if (AskTrueOrFalse("Ввімкнути в розетку посудомийну машину(введіть так або ні)?")) {
|
||||||
|
WashingMashines DishWasher = new WashingMashines(11, 1000, 30, "Посудомийна машина");
|
||||||
|
|
||||||
|
}
|
||||||
|
if (AskTrueOrFalse("Ввімкнути в розетку пральну машину(введіть так або ні)?")) {
|
||||||
|
WashingMashines ClothesWasher = new WashingMashines(50, 2000, 10, "Пральна машина");
|
||||||
|
}
|
||||||
|
if (AskTrueOrFalse("Ввімкнути в розетку мікрохвильовку(введіть так або ні)?")) {
|
||||||
|
HeatingDevices MicroWawe = new HeatingDevices(2000, 1100, 10000, "Мікрохвильвка");
|
||||||
|
}
|
||||||
|
if (AskTrueOrFalse("Ввімкнути в розетку духову піч(введіть так або ні)?")) {
|
||||||
|
HeatingDevices Oven = new HeatingDevices(1000, 800, 1000, "Духова піч");
|
||||||
|
}
|
||||||
|
if (AskTrueOrFalse("Ввімкнути в розетку блендер(введіть так або ні)?")) {
|
||||||
|
MechanicDevices Blender = new MechanicDevices(200, 400, 1, "Блендер");
|
||||||
|
}
|
||||||
|
if (AskTrueOrFalse("Ввімкнути в розетку пилосос(введіть так або ні)?")) {
|
||||||
|
MechanicDevices VacuumCleaner = new MechanicDevices(50, 300, 3, "Пилосос");
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Цей метод створений для того, щоб запитати у користувача, які він прилади хоче ввімкнути в розетку і потім,
|
||||||
|
* якщо відповідь буде позитивна, створює об'єект цього класу.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
public static int[] getLimits(){
|
||||||
|
int[] limits = new int[2];
|
||||||
|
while (true) {
|
||||||
|
int low = 0;
|
||||||
|
System.out.println("Введіть нижню границю пошуку");
|
||||||
|
Scanner scanner = new Scanner(System.in);
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
low = scanner.nextInt();
|
||||||
|
break;
|
||||||
|
} catch (InputMismatchException e) {
|
||||||
|
System.out.println("Введені символи не є цілим числом, спробуйте ще раз.");
|
||||||
|
scanner.nextLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("Введіть нижню границю пошуку");
|
||||||
|
int top = 0;
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
top = scanner.nextInt();
|
||||||
|
break;
|
||||||
|
} catch (InputMismatchException e) {
|
||||||
|
System.out.println("Введені символи не є цілим числом, спробуйте ще раз.");
|
||||||
|
scanner.nextLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (top >= low) {
|
||||||
|
limits[0]=low;
|
||||||
|
limits[1]=top;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
System.out.println("Нижня границя більна верхньої");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return limits;
|
||||||
|
/**
|
||||||
|
* Цей метод створений для того, щоб запитати у користувача нижню і верхню границю пошуку, і при цьому оброботи
|
||||||
|
* всі можливі помилки, такі як ввід не цілого числа, та перевищення нижньої границі верхньої
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
public static boolean AskTrueOrFalse(String question) {
|
||||||
|
System.out.println(question);
|
||||||
|
Scanner scanner = new Scanner(System.in);
|
||||||
|
boolean x = true;
|
||||||
|
while (true) {
|
||||||
|
String anwser = scanner.nextLine();
|
||||||
|
if (anwser.equalsIgnoreCase("так")) {
|
||||||
|
x = true;
|
||||||
|
break;
|
||||||
|
} else if (anwser.equalsIgnoreCase("ні")) {
|
||||||
|
x = false;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
System.out.println("Ви ввели не правильний текст, спробуйте ще раз");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Цей метод створений для того, щоб запитати у користвуча відповідь так або ні. Він приймає текстовий аргумент,
|
||||||
|
* виводить його на екран і очікує ввід. Потім він перевіряє відповіть на рівність "так" або "ні"
|
||||||
|
* і повертає значення true або false.
|
||||||
|
*/
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
public class MechanicDevices extends ElectroAppliance {
|
||||||
|
// Поля похідного класу Mechanic Devices
|
||||||
|
private int mechanicPower;
|
||||||
|
private static int totalMechanicPower = 0;
|
||||||
|
// Конструктор який дає значення полям і шукає загальну механічна потужність
|
||||||
|
public MechanicDevices(int mechanicPower, int power, int electromagneticRadiation, String name) {
|
||||||
|
super(power, electromagneticRadiation, name);
|
||||||
|
this.mechanicPower = mechanicPower;
|
||||||
|
totalMechanicPower = totalMechanicPower + mechanicPower;
|
||||||
|
}
|
||||||
|
// Метод, який повертає загальну механічну потужність
|
||||||
|
|
||||||
|
public static int getTotalMechanicPower() {
|
||||||
|
return totalMechanicPower;
|
||||||
|
}
|
||||||
|
/** Похідний класу електроприбору, який ще має поле механічної потужності */
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
public class WashingMashines extends ElectroAppliance {
|
||||||
|
// Поля похідного класу Washing Machines
|
||||||
|
private int waterConsumption;
|
||||||
|
private static int totalWaterConsumption = 0;
|
||||||
|
// Конструктор який задає поля і шукає загальне споживання води
|
||||||
|
public WashingMashines(int waterConsumption, int power, int electromagneticRadiation, String name) {
|
||||||
|
super(power, electromagneticRadiation, name);
|
||||||
|
this.waterConsumption = waterConsumption;
|
||||||
|
totalWaterConsumption = totalWaterConsumption + waterConsumption;
|
||||||
|
}
|
||||||
|
// Метод що повертає загальне споживання води
|
||||||
|
public static int getTotalWaterConsumption() {
|
||||||
|
return totalWaterConsumption;
|
||||||
|
}
|
||||||
|
/** Похідний класу електроприбору, який ще має поле споживання води */
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue