fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. // Перечесление месяцев
  11. enum Month
  12. {
  13. January,
  14. February,
  15. March,
  16. April,
  17. May,
  18. June,
  19. July,
  20. August,
  21. September,
  22. October,
  23. November,
  24. December
  25. }
  26.  
  27. private static Month _month = Month.January;
  28. private static float[][] _monthTemp = new float[12][31];
  29. private static boolean _firstRun = false;
  30.  
  31. public static void main (String[] args) throws java.lang.Exception
  32. {
  33. GenerateTemp();
  34. Scanner in = new Scanner(System.in);
  35. String input;
  36. String[] command;
  37. while(true)
  38. {
  39. System.out.println("Доступные команды:");
  40. System.out.println("all - получить информацию о всех месяцах");
  41. System.out.println("generate - выполнить генерацию новых значений для дней и месяцев");
  42.  
  43. System.out.println("month - переключить режим на ввод месяцев");
  44. System.out.println("exit - выйти из программы");
  45. input = in.nextLine(); // получаем текст
  46. command = input.split(" "); // разбиваем его на подстроки
  47. // Определяем, что будем делать с коммандами
  48. switch (command[0])
  49. {
  50. case "all":
  51. {
  52. InfoAllTemp(); // получаем информацию за все месяца сразу
  53. }
  54. break;
  55. case "generate":
  56. {
  57. GenerateTemp(); // генерируем данные по темературе по новому
  58. }
  59. break;
  60. case "month":
  61. {
  62.  
  63. try
  64. {
  65. Month _temp = _month.valueOf(command[1]);
  66. GetMonthInfo(_temp.ordinal()); // получаем информацию только об одном месяце
  67.  
  68. }
  69. {
  70. System.out.println("Название месяца введено некорректно!\nПожалуйста, повторите ввод!");
  71. }
  72. }
  73. break;
  74. case "exit":
  75. {
  76. System.exit(0); // выходим из программы
  77. }
  78. break;
  79. default:
  80. {
  81. System.out.println("Введенной команды не существует\nПовторите ввод снова!");
  82. }
  83. break;
  84. }
  85. }
  86.  
  87. }
  88.  
  89. public static void GetMonthInfo(int month)
  90. {
  91. Month temp[] = Month.values();
  92. System.out.println("-----------------------------------------");
  93. System.out.println("Месяц: " + temp[month].toString());
  94. System.out.println("Количество дней: " + GetDayCount(month));
  95. System.out.println("Средняя температура: " + GetMediumTemp(month));
  96. System.out.println("Дневная температура, ниже среднемесячной:");
  97. for (int countDay = 0; countDay < GetDayCount(month); countDay++)
  98. {
  99. if (_monthTemp[month][countDay] < GetMediumTemp(month))
  100. {
  101. System.out.println(countDay+1 + " числа" + ": " + _monthTemp[month][countDay]);
  102. }
  103. }
  104. System.out.println("\nДневная температура, выше среднемесячной:");
  105. for (int countDay = 0; countDay < GetDayCount(month); countDay++)
  106. {
  107.  
  108. if (_monthTemp[month][countDay] > GetMediumTemp(month))
  109. {
  110. System.out.println(countDay+1 + " числа" + ": " + _monthTemp[month][countDay]);
  111. }
  112. }
  113. System.out.println("-----------------------------------------");
  114. }
  115.  
  116. public static void GenerateTemp()
  117. {
  118. for (int countMonth = 0; countMonth < _monthTemp.length; countMonth++)
  119. {
  120. for (int countDay = 0; countDay < GetDayCount(countMonth); countDay++)
  121. {
  122. // Генерируем температуру по дням для всех дней каждого месяца
  123. // При необходимости, достаточно будет поменять эту строчку на пользовательский ввод
  124. _monthTemp[countMonth][countDay] = 10 + (float)(Math.random() * ((30 - 10)));
  125.  
  126. }
  127. }
  128. // Блок не допускает вывода строки при первом запуске
  129. if (!_firstRun)
  130. {
  131. _firstRun = true;
  132. } else
  133. {
  134. System.out.println("Генерация новых значений завершена!\n");
  135.  
  136. }
  137. }
  138.  
  139. public static void InfoAllTemp()
  140. {
  141. Month temp[] = Month.values();
  142. for (int countMonth = 0; countMonth < _monthTemp.length; countMonth++)
  143. {
  144. System.out.println("-----------------------------------------");
  145. System.out.println("Месяц: " + temp[countMonth].toString());
  146. System.out.println("Количество дней: " + GetDayCount(countMonth));
  147. System.out.println("Средняя температура: " + GetMediumTemp(countMonth));
  148. System.out.println("-----------------------------------------");
  149. }
  150. }
  151.  
  152. public static float GetMediumTemp(int month)
  153. {
  154. float mediumTemp = 0;
  155. for (int countDay = 0; countDay < GetDayCount(month); countDay++)
  156. {
  157. // Суммируем температуры всех дней заданного месяца
  158. mediumTemp += _monthTemp[month][countDay] + 1;
  159. }
  160. // Возвращаем среднее значение
  161. return mediumTemp / GetDayCount(month);
  162. }
  163.  
  164. public static int GetDayCount(int month)
  165. {
  166. int day = 0;
  167. Month temp[] = Month.values();
  168. // Получаем число дней в месяце
  169. switch(temp[month].toString())
  170. {
  171. case "April":
  172. case "June":
  173. case "September":
  174. case "November":
  175. day = 30;
  176. break;
  177. case "February":
  178. day = 28;
  179. break;
  180. default:
  181. day = 31;
  182. break;
  183. }
  184.  
  185. return day;
  186. }
  187. }
  188.  
  189.  
  190.  
Runtime error #stdin #stdout #stderr 0.05s 711680KB
stdin
month Junek
stdout
Доступные команды:
all - получить информацию о всех месяцах
generate - выполнить генерацию новых значений для дней и месяцев
month - переключить режим на ввод месяцев
exit - выйти из программы
Название месяца введено некорректно!
Пожалуйста, повторите ввод!
Доступные команды:
all - получить информацию о всех месяцах
generate - выполнить генерацию новых значений для дней и месяцев
month - переключить режим на ввод месяцев
exit - выйти из программы
stderr
Exception in thread "main" java.util.NoSuchElementException: No line found
	at java.util.Scanner.nextLine(Scanner.java:1540)
	at Ideone.main(Main.java:45)