package com.javarush.task.task29.task2910;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import static com.javarush.task.task29.task2910.Constants.*;
public class Game {
private List<Sportsman> members;
Sportsman controlSportsman;
public Game() {
initializeControlSportsman();
members = new ArrayList<>();
for (int i = 0; i < SPORTSMAN_COUNT; i++) {
members.add(new Sportsman(i + 1));
}
}
private void initializeControlSportsman() {
controlSportsman = new Sportsman(0);
controlSportsman.setAverageSpeed(new BigDecimal(20));
controlSportsman.setChanceToHit(MAX_CHANCE_TO_HIT_IN_TARGET);
controlSportsman.setCountHitOutTarget(2);
controlSportsman.setResultTime(new BigDecimal("3640.00"));
System.out.println("РЕЗУЛЬТАТ КОНТРОЛЬНО СПОРТСМЕНА:");
controlSportsman.printResultInfo();
}
public void startCompetition() {
for (int i = 0; i < members.size(); i++) {
members.get(i).calculateNumberOfMiss();
BigDecimal timeToRace = controlSportsman.getResultTime().subtract(BigDecimal.valueOf(members.get(i).getCountHitOutTarget() * PENALTY_TIME_PER_ONE_MISS));
System.out.println(timeToRace);
members.get(i).setAverageSpeed(new BigDecimal(RACE_LENGTH / (timeToRace.doubleValue() / 3600)).setScale(4, BigDecimal.ROUND_HALF_UP));
members.get(i).calculateFullTime();
}
}
public void printAllResults() {
for (int i = 0; i < members.size(); i++) {
members.get(i).printResultInfo();
}
}
public void printSportsmanWithEqualTime() {
for (Sportsman sportsman : getSportsmanWithEqualTime()) {
sportsman.printResultInfo();
}
}
private List<Sportsman> getSportsmanWithEqualTime() {
List<Sportsman> result = new ArrayList<>();
for (int i = 0; i < members.size(); i++) {
if (members.get(i).getResultTime().equals(controlSportsman.getResultTime())) {
result.add((members.get(i)));
}
}
return result;
}
}
package com.javarush.task.task29.task2910;
/*
Это архаичное слово "Биатлон"
*/
public class Solution {
public static void main(String[] args) {
Game game = new Game();
printDelimiter();
game.startCompetition();
System.out.println("\n\nВСЕ РЕЗУЛЬТАТЫ:");
game.printAllResults();
printDelimiter();
System.out.println("\n\nСПОРТСМЕНЫ С ТАКИМ ЖЕ ИТОГОВЫМ ВРЕМЕНЕМ, КАК У КОНТРОЛЬНОГО СПОРТСМЕНА:");
game.printSportsmanWithEqualTime();
printDelimiter();
}
private static void printDelimiter() {
System.out.println("=================================================================================================");
}
}