import java.util.*; import java.lang.*; import java.io.*; class Main { // Перечисление месяцев enum Month { January, February, March, April, May, June, July, August, September, October, November, December } private static Month _month = Month.January; // объявление перечисления private static float[][] _monthTemp = new float[12][31]; // двумерный массив под темературы private static boolean _firstRun = false; // флаг-первый запуск public static void main (String[] args) throws java.lang.Exception { GenerateTemp(); // первичная генерация температурных данных Scanner in = new Scanner(System.in); // Запуск в цикле while(true) { System.out.println("Доступные команды:"); System.out.println("all - получить информацию о всех месяцах"); System.out.println("generate - выполнить генерацию новых значений для дней и месяцев"); System.out.println("month НазваниеМесяца - показать информацию за конкретный месяц"); System.out.println("exit - выйти из программы"); String input = in.nextLine(); // получаем текст String[] command = input.split(" "); // разбиваем его на подстроки // Определяем, что будем делать с введенным текстом switch (command[0]) { case "all": { InfoAllTemp(); // получаем информацию за все месяца сразу } break; case "generate": { GenerateTemp(); // генерируем данные по темературе по новому } break; case "month": { try { Month _temp = _month.valueOf(command[1]); GetMonthInfo(_temp.ordinal()); // получаем информацию только об одном месяце } catch(RuntimeException e) { System.out.println("Название месяца введено некорректно!\nПожалуйста, повторите ввод!"); } } break; case "exit": { System.exit(0); // выходим из программы } break; default: { System.out.println("Введенной команды не существует\nПовторите ввод снова!"); } break; } } } public static void GetMonthInfo(int month) { Month temp[] = Month.values(); // Выводим информацию за месяц System.out.println("-----------------------------------------"); System.out.println("Месяц: " + temp[month].toString()); System.out.println("Количество дней: " + GetDayCount(month)); System.out.println("Средняя температура: " + GetMediumTemp(month)); System.out.println("Дневная температура, ниже среднемесячной:"); for (int countDay = 0; countDay < GetDayCount(month); countDay++) { if (_monthTemp[month][countDay] < GetMediumTemp(month)) { System.out.println(countDay+1 + " числа" + ": " + _monthTemp[month][countDay]); } } System.out.println("\nДневная температура, выше среднемесячной:"); for (int countDay = 0; countDay < GetDayCount(month); countDay++) { if (_monthTemp[month][countDay] > GetMediumTemp(month)) { System.out.println(countDay+1 + " числа" + ": " + _monthTemp[month][countDay]); } } System.out.println("-----------------------------------------"); } public static void GenerateTemp() { for (int countMonth = 0; countMonth < _monthTemp.length; countMonth++) { for (int countDay = 0; countDay < GetDayCount(countMonth); countDay++) { // Генерируем температуру по дням для всех дней каждого месяца // При необходимости, достаточно будет поменять эту строчку на пользовательский ввод _monthTemp[countMonth][countDay] = 10 + (float)(Math.random() * ((30 - 10))); } } // Блок не допускает вывода строки при первом запуске if (!_firstRun) { _firstRun = true; } else { System.out.println("Генерация новых значений завершена!\n"); } } public static void InfoAllTemp() { Month temp[] = Month.values(); // Вывод информации за все месяцы for (int countMonth = 0; countMonth < _monthTemp.length; countMonth++) { System.out.println("-----------------------------------------"); System.out.println("Месяц: " + temp[countMonth].toString()); System.out.println("Количество дней: " + GetDayCount(countMonth)); System.out.println("Средняя температура: " + GetMediumTemp(countMonth)); System.out.println("-----------------------------------------"); } } public static float GetMediumTemp(int month) { float mediumTemp = 0; for (int countDay = 0; countDay < GetDayCount(month); countDay++) { // Суммируем температуры всех дней заданного месяца mediumTemp += _monthTemp[month][countDay] + 1; } // Возвращаем среднее значение return mediumTemp / GetDayCount(month); } public static int GetDayCount(int month) { int day = 0; Month temp[] = Month.values(); // Получаем число дней в месяце switch(temp[month].toString()) { case "April": case "June": case "September": case "November": day = 30; break; case "February": day = 28; break; default: day = 31; break; } return day; } }
PS I do not have at hand Java-SDK, performed at https://ideone.com/4u291j , it works.