-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
84 lines (78 loc) · 4.44 KB
/
Main.java
File metadata and controls
84 lines (78 loc) · 4.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package Geekbrains;
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
}
}
class ArrayTask {
//1. Написать метод, который меняет два элемента массива местами.(массив может быть любого ссылочного типа);
public static void arrToSwap(Object[] array, int a, int b) {
Object tmp = array[a];
array[a] = array[b];
array[a] = tmp;
}
//2. Написать метод, который преобразует массив в ArrayList;
public <T> ArrayList convert(T[] array) {
return new ArrayList<>(Arrays.asList(array));
}
}
// 3. Большая задача:
//a. Есть классы Fruit -> Apple, Orange;(больше фруктов не надо)
//b. Класс Box в который можно складывать фрукты, коробки условно сортируются по типу фрукта, поэтому в одну коробку нельзя сложить и яблоки, и апельсины;
//c. Для хранения фруктов внутри коробки можете использовать ArrayList;
//d. Сделать метод getWeight() который высчитывает вес коробки, зная количество фруктов и вес одного фрукта(вес яблока - 1.0f, апельсина - 1.5f, не важно в каких это единицах);
//e. Внутри класса коробка сделать метод compare, который позволяет сравнить текущую коробку с той, которую подадут в compare в качестве параметра, true - если их веса равны, false в противном случае(коробки с яблоками мы можем сравнивать с коробками с апельсинами);
//f. Написать метод, который позволяет пересыпать фрукты из текущей коробки в другую коробку(помним про сортировку фруктов, нельзя яблоки высыпать в коробку с апельсинами), соответственно в текущей коробке фруктов не остается, а в другую перекидываются объекты, которые были в этой коробке;
//g. Не забываем про метод добавления фрукта в коробку.
class Fruit {
private float weight;
public Fruit(float weight) {
this.weight = weight;
}
float getWeight() {
return weight;
}
}
class Apple <T> extends Fruit {
public Apple(float weight) {
super(weight);
}
}
class Orange <T> extends Fruit {
public Orange(float weight) {
super(weight);
}
}
class Box <T extends Fruit> {
// Складываем фрукты одного типа
private ArrayList <T> arrayList;
// конструктор на один или несколько фрутов
public Box() {
this.arrayList = new ArrayList<>();
}
public Box(T... fruits) {
this.arrayList = new ArrayList<>(Arrays.asList(fruits));
}
// вес
public float getWeight() {
float weight = 0.0f;
for (T o : arrayList) {
weight += o.getWeight();
}
return weight;
}
// сравнить
public boolean compare(Box <?> box){
return (this.getWeight()-box.getWeight() < 0.0001);
}
// добавить
public void add(T fruit) {
arrayList.add(fruit);
}
// перемещение
public void sprinkle(Box<T> another) {
another.arrayList.addAll(arrayList);
arrayList.clear();
}
}