/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
// Перечесление месяцев
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;
{
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 - выйти из программы"); input = in.nextLine(); // получаем текст
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()); // получаем информацию только об одном месяце
}
{
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;
}
}