• Апреля 05, 2020, 07:24:27 am
• Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Новости: Вебинар по выбору IT профессии: http://bit.ly/2S4kcC6

Автор Тема: Java_OOP_Alexander_Online_Суббота_21_03_2020  (Прочитано 129 раз)

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13429
    • Просмотр профиля
    • E-mail
Java_OOP_Alexander_Online_Суббота_21_03_2020
« : Марта 21, 2020, 03:41:48 pm »
Hello

Vitalii92

  • Пользователи
  • *
  • Сообщений: 13
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #1 : Марта 25, 2020, 12:52:10 am »
Введение в ООП Дз
https://github.com/IvVitalii/test

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13429
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #2 : Марта 25, 2020, 03:24:34 pm »
Vitalii92
Задание 4.
По условию у метода исходящий звонок должен быть только один параметр. У вас же:

public void calling(Phone phone, Network net) {

Что по сути нарушает задание.

В остальном решение верное

Vitalii92

  • Пользователи
  • *
  • Сообщений: 13
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #3 : Марта 26, 2020, 01:18:43 am »
Переделал
4) Опишите класс Phone (одним из свойств должен быть его номер). Также опишите
класс Network (сеть мобильного оператора). Телефон должен иметь метод
регистрации в сети мобильного оператора. Также у телефона должен быть метод call
(номер другого телефона), который переберет все телефоны, зарегистрированные в
сети. Если такой номер будет найден, то осуществить вызов, если нет - вывести
сообщение об ошибочности набранного номера.
Main
package com.gmail.ivy;

public class Main {

public static void main(String[] args) {
Network net1 = new Network("Kyiv");
net1.addToBase(new Phone(380982222222L));
net1.addToBase(new Phone(380983333333L));
net1.addToBase(new Phone(380984444444L));
net1.addToBase(new Phone(380985555555L));
Phone p1 = new Phone(380981111111L);
p1.regPhone(net1, p1);
p1.calling(380981111222L);
p1.calling(380984444444L);
System.out.println(net1);
}

}
Network
package com.gmail.ivy;

import java.util.ArrayList;

public class Network {
private String name;
private static ArrayList<Phone> phoneBase = new ArrayList<Phone>();

public Network(String name) {
this.name = name;
}

public Network() {

}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public static ArrayList<Phone> getPhoneBase() {
return phoneBase;
}

public void setPhoneBase(ArrayList<Phone> phoneBase) {
Network.phoneBase = phoneBase;
}

@Override
public String toString() {
String s = name + " Phonebase\n";
int i = 1;
for (Phone phone : phoneBase) {
s += i + phone.toString() + "\n";
i++;
}
return s;
}

public void addToBase(Phone phone) {
phoneBase.add(phone);
}

}
Phone
package com.gmail.ivy;

public class Phone {
private long number;

public Phone(long number) {

this.number = number;
}

public Phone() {

}

public long getNumber() {
return number;
}

public void setNumber(long number) {
this.number = number;
}

@Override
public String toString() {
return " [number=" + number + "]";
}

public void regPhone(Network net, Phone phone) {
net.addToBase(phone);
}

public void calling(long number) {
boolean absent = true;
for (Phone ph : Network.getPhoneBase()) {
if (number == ph.number) {
System.out.println("Calling on number " + ph.number);
absent = false;
break;
} else if (number == this.number) {
System.out.println("You are calling to yourself");
absent = false;
break;
}
}
if (absent) {
System.out.println("Number is absent in " + " Phonebase " + number);
}
}
}

Vitalii92

  • Пользователи
  • *
  • Сообщений: 13
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #4 : Марта 26, 2020, 12:08:27 pm »
НАСЛЕДОВАНИЕ ДЗ
https://github.com/IvVitalii/test1

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13429
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #5 : Марта 26, 2020, 01:03:01 pm »
Vitalii92

Лекция - Наследование.

Зря вы в классе Треугольник и т. д. Ввели эти поля

private double sideA;
private double sideB;
private double sideC;
И уже тем более некоректно при такой реализации класса вычислять площадь вот так:

@Override
public double getArea() {
double p = (sideA + sideB + sideC) / 2;
double s = Math.sqrt(p * (p - sideA) * (p - sideB) * (p - sideC));
return s;
}
Это связанно с тем что длинна сторон у вас вычисляется один раз в конструкторе Треугольника. НО вызываем например метод установки для точки С, вот этот

public void setC(Point c) {
this.c = c;
}
И видим что точка была заменена это правильно, но вот длинна сторон завязанных на эту точку никак не поменялась. В итоге теперь получаем абсолютно неверную площадь.
Ну и тоже самое в остальных реализациях фигур.
Класс Доска.
В методах подобных этому:

public void put(Shape shape, int boardPart) {
if (isEmpty(boardPart)) {
board[boardPart] = shape;
} else {
System.out.println("Part of the Board is Not empty");
}


Наплохо бы проверить индекс на корректность. Например если указать что   boardPart = -1 Ваша программа завершится с исключением.
В остальном решение верное.

Vitalii92

  • Пользователи
  • *
  • Сообщений: 13
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #6 : Марта 26, 2020, 02:13:57 pm »
Вроде исправил
https://github.com/IvVitalii/test1

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13429
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #7 : Марта 27, 2020, 12:30:56 am »
Vitalii92

Вот теперь решение верное

Max_se

  • Пользователи
  • *
  • Сообщений: 3
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #8 : Марта 28, 2020, 03:41:45 pm »
4 Часть 1 ДЗ
Main
package it;
public class Main {

    public static void main(String[] args) {
            Network Kyivstar = new Network();

            Phone myPhone = new Phone("+380666678403");
            myPhone.registerPhone(Kyivstar);

            Phone phone1 = new Phone("+380676525647");
            phone1.registerPhone(Kyivstar);

            Phone phone2 = new Phone("+380676525648");
            phone2.registerPhone(Kyivstar);

            String result = myPhone.call(phone2.getNumber());
            System.out.println(result);
    }
}
Phone
package it;

public class Phone {
    String number;
    private Network network = null;

    public Phone(String number) {
        this.number = number;
    }

    public void registerPhone(Network network) {
        this.network = network;
        network.registerNumber(number);
    }

    public String call(String number) {
        return network.searchAndCall(number);
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public Network getNetwork() {
        return network;
    }

    public void setNetwork(Network network) {
        this.network = network;
    }

}
Networkpackage it;

public class Network {
    private String[] phoneList = new String[10];

    public Network() {
    }

    public String[] phoneList() {
        return phoneList;
    }

    public String searchAndCall(String destinationNumber){
        String message = "";
        for(int i = 0; i < phoneList.length && phoneList[i]!=null; i++){
            if(phoneList[i].equalsIgnoreCase(destinationNumber)){
                message = "called " + destinationNumber;
                break;
            }else {
                message = "Invalid number.";
            }
        }
        return message;
    }

    public void registerNumber(String number) {
        for (int i = 0; i < phoneList.length; i++) {
            if (phoneList[i] == null) {
                phoneList[i] = number;
                break;
            }
            else if (phoneList[i].equalsIgnoreCase(number)){
                break;
            }
        }
    }
}

Max_se

  • Пользователи
  • *
  • Сообщений: 3
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #9 : Марта 28, 2020, 03:44:30 pm »
2 ДЗ Наследование
Board
package IT;

import java.math.*;

public class Main {

    public static void main(String[] args) {
        Shape triangular = new Triangular(new Point(0,0),new Point(0,4), new Point(3,0));
        System.out.println(triangular);
        System.out.println(triangular.getPerimeter());
        System.out.println(triangular.getArea());

        Shape circle = new Circle( new Point(0,0), new Point(2,0));
        System.out.println(circle);
        System.out.println(circle.getPerimeter());
        System.out.println(circle.getArea());

        Shape rectangle = new Rectangle(new Point(0,0), new Point(2,0), new Point(2,2), new Point(0,2));
        System.out.println(rectangle);
        System.out.println(rectangle.getPerimeter());
        System.out.println(rectangle.getArea());

        Board board = new Board();
        board.addShape(triangular,1);
        board.addShape(triangular,1);
        board.addShape(triangular,5);
        board.addShape(circle,2);
        board.addShape(rectangle,3);
        board.delShape(5);
        board.delShape(3);
        board.addShape(triangular,3);
        board.addShape(rectangle,4);

        System.out.println();

        board.info();
    }
}
Shape
package IT;

public abstract class Shape {
    public abstract double getArea();
    public abstract double getPerimeter();
}
Point
package IT;

public class Point {
    double x;
    double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }

    @Override
    public String toString() {
        return "Point{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }

    public static double distance(Point a, Point b){
        return Math.sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    }
}
Triangular
package IT;

public class Triangular extends Shape {
    private Point a;
    private Point b;
    private Point c;

    public Triangular(Point a, Point b, Point c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public Point getA() {
        return a;
    }

    public void setA(Point a) {
        this.a = a;
    }

    public Point getB() {
        return b;
    }

    public void setB(Point b) {
        this.b = b;
    }

    public Point getC() {
        return c;
    }

    public void setC(Point c) {
        this.c = c;
    }

    @Override
    public String toString() {
        return "Triangular{" +
                "a=" + a +
                ", b=" + b +
                ", c=" + c +
                '}';
    }

    @Override
    public double getArea(){
        double p = this.getPerimeter()/2;
        return Math.sqrt(p*(p - Point.distance(a,b))
                *(p - Point.distance(b,c))
                *(p - Point.distance(c,a)));
    }

    @Override
    public double getPerimeter(){
        return Point.distance(a,b)+Point.distance(b,c)+Point.distance(a,c);
    }
}
Rectangle
package IT;

public class Rectangle extends Shape {
    private Point a;
    private Point b;
    private Point c;
    private Point d;

    public Rectangle(Point a, Point b, Point c, Point d) {
        this.a = a;
        this.b = b;
        this.c = c;
        this.d = d;
    }

    public Point getA() {
        return a;
    }

    public void setA(Point a) {
        this.a = a;
    }

    public Point getB() {
        return b;
    }

    public void setB(Point b) {
        this.b = b;
    }

    public Point getC() {
        return c;
    }

    public void setC(Point c) {
        this.c = c;
    }

    public Point getD() {
        return d;
    }

    public void setD(Point d) {
        this.d = d;
    }

    @Override
    public String toString() {
        return "Rectangle{" +
                "a=" + a +
                ", b=" + b +
                ", c=" + c +
                ", d=" + d +
                '}';
    }

    @Override
    public double getArea() {
        return Point.distance(a,b) * Point.distance(b,c);
    }

    @Override
    public double getPerimeter() {
        return 2 * (Point.distance(a,b)+Point.distance(b,c));
    }
}
Circle
package IT;

public class Circle extends Shape {
    private Point o;
    private Point a;

    public Circle(Point o, Point a) {
        this.o = o;
        this.a = a;
    }

    public Point getO() {
        return o;
    }

    public void setO(Point o) {
        this.o = o;
    }

    public Point getA() {
        return a;
    }

    public void setA(Point a) {
        this.a = a;
    }

    @Override
    public String toString() {
        return "Circle{" +
                "o=" + o +
                ", a=" + a +
                '}';
    }

    @Override
    public double getArea() {
        return Math.PI * Math.pow( Point.distance(o,a), 2);
    }

    @Override
    public double getPerimeter() {
        return 2 * Math.PI * Point.distance(o,a);
    }
}

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13429
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #10 : Марта 29, 2020, 12:02:29 am »
Max_se
В Java не используют открытые поля класса, так что такой код неудачен:
public class Phone {
    String number;
    private Network network = null;

Поля следует делать все таки private
Лекция 2. Наследование.
Такое же замечание:
public class Point {
    double x;
    double y;
В остальном решение верное

Vitalii92

  • Пользователи
  • *
  • Сообщений: 13
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #11 : Апреля 02, 2020, 07:55:23 pm »
Наследование, Исключения, Интерфейсы
ДЗ
https://github.com/IvVitalii/Lesson2

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 13429
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #12 : Апреля 03, 2020, 02:47:48 pm »
Vitalii92

Длинна метода не должна превышать 30 строк. У вас же в методе:
public void interactiveAdd() {
Их гораздо больше. Разбейте его на подметоды

Методы поиска должны возвращать то что ищется. У вас метод поиска Студента, так почему же он вот так реализован:

public void find(String s) {
Он же ничего не возвращает. А должен Студента.

В остальном решение верное

Vitalii92

  • Пользователи
  • *
  • Сообщений: 13
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #13 : Апреля 03, 2020, 05:20:23 pm »
Немного исправил
https://github.com/IvVitalii/Lesson2

Max_se

  • Пользователи
  • *
  • Сообщений: 3
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Online_Суббота_21_03_2020
« Ответ #14 : Апреля 03, 2020, 10:54:42 pm »
Main
package it;
import java.io.IOException;

public class Main {

    public static void main(String[] args) {
        Student st1 = new Student("Surname1","Alex",true,3,4.0,17);
        Student st2 = new Student("LSurname2", "Max", true, 3,5.0 ,22);
        Student st3 = new Student("ASurname3", "Anya", false, 3,3.5 ,20);
        Student st4 = new Student("BSurname4", "Egor", true, 3,3.7 ,17);
        Student st5 = new Student("GSurname5", "Nastya", false, 3, 4.3,16);

        System.out.println();

        Group group = new Group("Univer");
        group.addStudent(st1);
        group.addStudent(st2);
        group.addStudent(st3);
        group.addStudent(st4);
        group.addStudent(st5);
        System.out.println();

        group.sortSurnameAndPrint();

        group.getStudentValidForArmy();

        sendInviteToArmy(group);
    }

    public static void sendInviteToArmy(Voenkom soldierGroup){ //Военкомат рассматривает группу студентов как группу военно обязанных
        Soldier[] soldierArr = soldierGroup.getStudentValidForArmy(); //Группу годных служить как солдат
        for(Soldier soldier: soldierArr){
            soldier.messageFromVoenkom();
        }
    }

}

Human
package it;

public class Human {
    private String name;
    private String surname;
    private int age;
    private boolean male;

    public Human(String surname_, String name_, boolean male_, int age_) {
        if(surname_!=null){
            this.surname = surname_;
        }
        else{
            System.out.println("Invalid surname");
        }
        if(name_!=null) {
            this.name = name_;
        }
        else{
            System.out.println("Invalid name");
        }
        this.male = male_;
        this.age = age_;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        if(name!=null) {
            this.name = name;
        }
        else{
            System.out.println("Invalid name");
        }
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        if(surname!=null){
            this.surname = surname;
        }
        else{
            System.out.println("Invalid surname");
        }
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if(age > 0 && age <100) this.age = age;
        else System.out.println("Invalid age");
    }


    public boolean isMale() {
        return male;
    }

    public void setMale(boolean male) {
        this.male = male;
    }


    @Override
    public String toString() {
        return "Human{" +
                "name='" + name + '\'' +
                ", surname='" + surname + '\'' +
                ", age=" + age +
                ", sex=" + male +
                '}';
    }

}

Student
package it;

public class Student extends Human implements Comparable, Soldier {
    private Group group;
    private int course;
    private double averageRating;
    private int age;

    public Student(String surname, String name, boolean male, int course, double averageRating, int age) {
        super(surname, name, male, age);
        if (course > 0 && course <= 6) {
            this.course = course;
        } else {
            System.out.println("Invalid course number of student: " + getName() + " " + getSurname());
        }
        if (averageRating > 0 && averageRating <= 5) {
            this.averageRating = averageRating;
        } else {
            System.out.println("Invalid averageRating of student: " + getName() + " " + getSurname());
        }
    }

    @Override
    public String toString() {
        return "Student{" +
                "group=" + group +
                ", course=" + course +
                ", averageRating=" + averageRating +
                '}';
    }

    public Group getGroup() {
        return group;
    }

    public void setGroup(Group group) {
        this.group = group;
    }

    public int getCourse() {
        return course;
    }

    public void setCourse(int course) {
        if (course > 0 && course <= 6) this.course = course;
        else System.out.println("Invalid course number");
    }

    public double getAverageRating() {
        return averageRating;
    }

    public void setAverageRating(double averageRating) {
        if (averageRating > 0 && averageRating <= 5) {
            this.averageRating = averageRating;
        } else {
            System.out.println("Invalid averageRating");
        }
    }

    @Override
    public int compareTo(Object o) {
        if (o == null) {
            return -1;
        }
        Human anotherHuman = (Human) o;
        return this.getSurname().compareToIgnoreCase(anotherHuman.getSurname());
    }

    @Override
    public void messageFromVoenkom() {
        System.out.println("new message from Voencom:");
        System.out.println("Soldier " + this.getSurname() + " Welcome to the army!!!");
    }

}

Group
package it;
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;

public class Group implements Voenkom {
    private String groupName = "?";
    private Student[] groupList = new Student[10];

    public Group() {
    }

    public Group(String groupName) {
        this.groupName = groupName;
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }


    public void addStudent(Student newStudent) {
        if (newStudent.getGroup() == null) {
            boolean isAdd = false;
            for (int i = 0; i < groupList.length; i++) {
                if (groupList[i] == null) {
                    groupList[i] = newStudent;
                    newStudent.setGroup(this);
                    System.out.println("Student " + newStudent.getName() + " is added to the group: " + groupName);
                    isAdd = true;
                    break;
                }
            }
            try {
                if (!isAdd) {
                    throw new FullGroupException();
                }
            } catch (FullGroupException e) {
                System.out.println("The group is full ");
            }

        } else
            System.out.println("Student " + newStudent.getName() + " already studying in group: " + newStudent.getGroup().getGroupName());
    }


    public void interactiveAddStudent() { // интерактивное добавление студента
        int freePlace = -1;
        for (int i = 0; i < groupList.length; i++) {
            if (groupList[i] == null) {
                freePlace = i;
                System.out.println("Free place was found in group " + groupName + ". Please enter student data ");
                break;
            }
        }
        if (freePlace < 0) {
            System.out.println("The group is full");
        }
    }



    public void delStudent(String surname){ //удаление по фамилии
        int countSt = 0;
        for(Student st : groupList){
            if (st!=null && st.getSurname().equals(surname)){
                countSt++;
            }
        }
        if(countSt == 0){
            System.out.println("No student " + surname + " in "  + groupName + " group"); //если студентов нет
        }
        if(countSt == 1){
            for(int i = 0; i < groupList.length; i++){
                if(groupList[i]!=null && groupList[i].getSurname().equals(surname)) {
                    groupList[i].setGroup(null);
                    groupList[i] = null;
                    System.out.println("Student " + surname + " is deleted from the group" + groupName);
                    break;
                }
            }
        }
        if(countSt > 1){
            System.out.println("Student " + surname + " in group " + groupName + " more then 1!");
            searchStudent(surname);
            System.out.println("Please use the method delStudent(int number)");
        }
    }

    public void delStudent(int number){ //удаляем студента по номеру в группе
        try {
            String bufferStudSurname = groupList[number-1].getSurname();
            groupList[number-1].setGroup(null);
            groupList[number-1] = null;
            sortGroupListAfterDelStudent();
            System.out.println("Student " + bufferStudSurname + " is deleted from the group" + groupName);
        }
        catch(ArrayIndexOutOfBoundsException e){
            System.out.println("Invalid student number");
        }
    }

    private void sortGroupListAfterDelStudent(){ // убираем дырку null в массиве после удаления
        for(int i = 0; i < groupList.length-1; i++){
            if(groupList[i] == null && groupList[i+1] != null){
                groupList[i] = groupList[i+1];
                groupList[i+1] = null;
            }
        }
    }

    public void searchStudent(String surname){ //поиск всех студентов с такой фамилией
        boolean isFound = false;
        for(int i = 0; i < groupList.length; i++){
            if (groupList[i]!=null && groupList[i].getSurname().equals(surname)) {
                System.out.println("Student " + surname + " is found in group. List number is " + (i + 1) + ".");
                isFound = true;
            }
        }
        if(!isFound){
            System.out.println("No student " + surname + " in "  + groupName + " group");
        }
    }


    private class FullGroupException extends Exception {
    }


    private Student[] arrWithoutNull(Student[] arr) {
        int stCounter = 0;
        for(Student st : arr){
            if(st==null){
                break;
            }
            stCounter++;
        }
        Student[] sortList = new Student[stCounter];
        System.arraycopy (arr, 0, sortList, 0, stCounter);
        return sortList;
    }

    String stListToString (Student[] arr){
        StringBuilder sb = new StringBuilder();
        sb.append("groupName=");
        sb.append(groupName);
        sb.append("\n");
        for(Student st : arr){
            if(st==null) {
                break;
            }
            sb.append(st);
            sb.append("\n");
        }
        return sb.toString();
    }

    public void sortSurnameAndPrint(){
        Student[] sortList = arrWithoutNull(groupList);
        Arrays.sort(sortList);
        System.out.println("afterSurnameSort");
        System.out.println(stListToString(sortList));
    }

    public void sortAndPrint(){
        Student[] sortList = new Student[groupList.length];
        System.arraycopy (groupList, 0, sortList, 0, groupList.length);

        System.out.println("Please enter parameter of sort(surname/name/age/averageRating):");
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        try {
            String s = reader.readLine();
            boolean invalidEnter = true;
            if(s.equals("surname")){
                Arrays.sort(sortList, Comparator.comparing(Human::getSurname));
                System.out.println("after Surname Sort");
                System.out.println(stListToString(sortList));
                invalidEnter = false;
            }
            if(s.equals("name")){
                Arrays.sort(sortList, Comparator.comparing(Human::getName));
                System.out.println("after Name Sort");
                System.out.println(stListToString(sortList));
                invalidEnter = false;
            }
            if(s.equals("age")){
                Arrays.sort(sortList, Comparator.comparingInt(Human::getAge));
                System.out.println("after Age Sort");
                System.out.println(stListToString(sortList));
                invalidEnter = false;
            }
            if(s.equals("averageRating")){
                Arrays.sort(sortList, Comparator.comparingDouble(Student::getAverageRating) );
                System.out.println("after AverageRating Sort");
                System.out.println(stListToString(sortList));
                invalidEnter = false;
            }
            if(invalidEnter){
                throw new Exception();
            }
        }
        catch (Exception e){
            System.out.println("Invalid enter");
        }
    }


    @Override
    public Student[] getStudentValidForArmy() {
        Student[] studentValidForArmy = new Student[groupList.length];
        int counterOfValidStudent = 0;
        for(int i = 0; i < groupList.length; i++) {
            if (groupList[i] != null && groupList[i].isMale() && groupList[i].getAge() >= 18) {
                studentValidForArmy[counterOfValidStudent] = groupList[i];
                counterOfValidStudent++;
            }
        }
        return arrWithoutNull(studentValidForArmy);
    }


}

Voenkom
package it;

public interface Voenkom {
    Student[] getStudentValidForArmy();
}

Soldier
package it;

public interface Soldier {
    void messageFromVoenkom();
}