diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7ee44bc --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# User-specific stuff: +.idea/workspace.xml +.idea/tasks.xml +.idea/dictionaries +.idea/vcs.xml +.idea/jsLibraryMappings.xml + +# Sensitive or high-churn files: +.idea/dataSources.ids +.idea/dataSources.xml +.idea/dataSources.local.xml +.idea/sqlDataSources.xml +.idea/dynamic.xml +.idea/uiDesigner.xml + +# IntelliJ +/out/ + +*.iml +.idea/ diff --git a/src/Converter.java b/src/Converter.java new file mode 100644 index 0000000..2ed96d6 --- /dev/null +++ b/src/Converter.java @@ -0,0 +1,15 @@ +public class Converter { + static double DISTANCE_VALUE = 0.75; + static double CALORIES_VALUE = 50; + + public double getDistance(int steps) { + double distance = ((steps * DISTANCE_VALUE) / 1000); + return distance; + } + + public double getSumKlc(int steps) { + double sumcal = ((steps * CALORIES_VALUE) / 1000); + return sumcal; + } + +} diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..3e77cd3 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,53 @@ +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + printMenu(); + int userInput = scanner.nextInt(); + StepTracker stepTracker = new StepTracker(); + + while (userInput != 0) { + printMenu(); + userInput = scanner.nextInt(); + + if (userInput == 1) { + System.out.println("Введите месяц от 0 до 11"); + stepTracker.printMenuUser(); + int monthnumber = scanner.nextInt(); + System.out.println("Введите день от 0 до 30"); + int daynumber = scanner.nextInt(); + System.out.println("Укажите количество шагов пройденных за сегодня"); + int stepssum = scanner.nextInt(); + stepTracker.setStepsByDay(monthnumber, daynumber, stepssum); + } else if (userInput == 2) { + System.out.println("Введите номер месяца для получения статистики"); + stepTracker.printMenuUser(); + int month = scanner.nextInt(); + stepTracker.getStatistic(month); + + } else if (userInput == 3) { + System.out.println("Установите цель ваших шагов на день"); + int newplanstep = scanner.nextInt(); + if (newplanstep < 0) { + System.out.println("Вы ввели некорректное число! Попробуйте еще раз!"); + break; + } else { + stepTracker.changeDaySteps(newplanstep); + } + + } else if (userInput == 0) { + break; + } + } + System.out.println("Программа завершена"); + } + + private static void printMenu() { + System.out.println("Что вы хотите сделать?"); + System.out.println("1 - Ввести количество шагов за день"); // done + System.out.println("2 - Получить статистику"); + System.out.println("3 - Изменить цель по количеству шагов");// done + System.out.println("0 - Выход из приложения"); + } +} \ No newline at end of file diff --git a/src/StepTracker.java b/src/StepTracker.java new file mode 100644 index 0000000..345a0ce --- /dev/null +++ b/src/StepTracker.java @@ -0,0 +1,123 @@ +import java.util.Scanner; + +public class StepTracker { + + MonthData[] monthToData; + Converter converter; + int planStep; + Scanner scanner; + int steps; + int idDay; + int idMonth; + + public StepTracker() { + this.planStep = 10_000; + this.converter = new Converter(); + scanner = new Scanner(System.in); + int[] numMonth = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; + this.monthToData = new MonthData[12]; + + for (int i = 0; i < monthToData.length; i++) { + this.monthToData[i] = new MonthData(numMonth[i]); + } + } + + class MonthData { + int[] days; + + public MonthData(int i) { + this.days = new int[30]; + for (int j = 0; j < days.length; j++) { + days[i] = steps; + } + } + } + + public void printMenuUser() { + System.out.println("0 - Январь \n1 - Февраль \n2 - Март \n3 - Апрель \n4 - Май \n5 - Июнь " + + "\n6 - Июль \n7 - Август \n8 - Сентябрь \n9 - Октябрь \n10 - Ноябрь \n11 - Декабрь"); + } + + public void changeDaySteps(int planStep) { + this.planStep = planStep; + System.out.println("Ваша новая цель за день составила " + this.planStep + " шагов"); + } + + public void setStepsByDay(int idMonth, int idDay, int steps) { + this.idMonth = idMonth; + if (idMonth < 0 && idMonth >= 12) { + System.out.println("Вы ввели некорректное число! Попробуйте еще раз!"); + return; + } + this.idDay = idDay; + if (idDay < 0 && idDay > 30) { + System.out.println("Вы ввели некорректное число! Попробуйте еще раз!"); + return; + } + + this.steps = steps; + if (steps < 0) { + System.out.println("Вы ввели некорректное число! Попробуйте еще раз!"); + } else { + monthToData[idMonth].days[idDay] = steps; + System.out.println("Пройденное вами количество шагов составило " + this.steps + " за " + this.idDay + " день " + "в " + this.idMonth + " месяце"); + } + } + + public int getStepsByDay() { + return monthToData[idMonth].days[idDay]; + } + + + public void getStatistic(int month) { + + System.out.println("Количество пройденных шагов за " + (idDay) + " день составляет: " + getStepsByDay()); + System.out.println("Количество пройденных шагов за месяц составляет " + getTotalStepsbyMonth(month)); + System.out.println("Максимально пройденное количество шагов в этом месяце составляет " + getMaxStep()); + System.out.println("Среднее количество пройденных шагов составляет " + getAvgSteps(month)); + System.out.println("Пройденная вами дистанция за месяц составляет " + converter.getDistance(getTotalStepsbyMonth(month)) + " км."); + System.out.println("Вы сожгли за месяц " + converter.getSumKlc(this.steps) + " килокалорий"); + System.out.println("Лучшая серия шагов " + "в " + month + " месяце составляет: " + getBestSeria(month)); + } + + public int getTotalStepsbyMonth(int idMonth) { + int totalstep = 0; + for (int i = 0; i < monthToData[idMonth].days.length; i++) { + totalstep += monthToData[idMonth].days[i]; + } + return totalstep; + } + + + public int getMaxStep() { + int max = monthToData[idMonth].days[0]; + for (int i = 0; i < monthToData[idMonth].days.length; i++) { + if (max < monthToData[idMonth].days[i]) { + max = monthToData[idMonth].days[i]; + } + } + return max; + } + + public double getAvgSteps(int month) { + double avgSteps = 0.0; + avgSteps = getTotalStepsbyMonth(month) / monthToData[month].days.length; + return avgSteps; + } + + public int getBestSeria(int idMonth) { + int currentCount = 0; + int bestCount = 0; + for (int i = 0; i < monthToData[idMonth].days.length; i++) { + if (monthToData[idMonth].days[i] > planStep) { + currentCount = currentCount + 1; + } else { + currentCount = 0; + } + if (currentCount > bestCount) { + bestCount = currentCount; + } + } + return bestCount; + } +}