The average daily air temperature per month is given. Display the numbers of those days when the average monthly temperature was below the average daily temperature. The number of days in a month is determined by the name of the month. I started to write some code here, but I doubt that it is correct.

public class Laba5_2 { public static void main(String[] args) { int n=0; int month = 12; String monthString; switch (month) { case 1: monthString = "January"; break; case 2: monthString = "February"; break; case 3: monthString = "March"; break; case 4: monthString = "April"; break; case 5: monthString = "May"; break; case 6: monthString = "June"; break; case 7: monthString = "July"; break; case 8: monthString = "August"; break; case 9: monthString = "September"; break; case 10: monthString = "October"; break; case 11: monthString = "November"; break; case 12: monthString = "December"; break; default: monthString = "Invalid month"; break; } System.out.println(monthString); switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: n= 31; break; case 4: case 6: case 9: case 11: n= 30; break; case 2: n=28;} System.out.println("Введите название месяца"); System.out.println("Введите температуру за день"); for (int n = 0; n < 31; n++) { array[i] = input.nextInt(); } } 

    2 answers 2

    If I understand correctly, then first you need to enter the month in the console? If yes, then:

     import java.util.Scanner; public class JavaLab { public static void main(String[] args) { int days = 0, allTemperature = 0; boolean correct; String monthString = ""; int[] temperature; Scanner sc = new Scanner(System.in); System.out.println("Введите название месяца"); //будем требовать ввести название месяца до тех пор, //пока не будет введен корректно do { correct = false; //можно вводить в любом регистре monthString = sc.nextLine().toUpperCase(); switch (monthString) { case "ЯНВАРЬ": days = 31; break; case "ФЕВРАЛЬ": days = 28; break; case "МАРТ": days = 31; break; case "АПРЕЛЬ": days = 30; break; case "МАЙ": days = 31; break; case "ИЮНЬ": days = 30; break; case "ИЮЛЬ": days = 31; break; case "АВГУСТ": days = 31; break; case "СЕНТЯБРЬ": days = 30; break; case "ОКТЯБРЬ": days = 31; break; case "НОЯБРЬ": days = 30; break; case "ДЕКАБРЬ": days = 31; break; default: System.out.println("Название месяца некорректно!"); //TRUE даст возможность при ошибке возобновить запрос месяца correct = true; break; } }while (correct); System.out.println("Месяц: " + monthString.toUpperCase()); System.out.println("Количество дней: " + days); System.out.println("Введите температуру за день"); //инициализировали массив полученным месяцем temperature = new int[days]; //заполним месяц for (int i = 0; i < days; i++) { System.out.println("День №: " + (i+1)); temperature[i] = sc.nextInt(); //"складываем" общую сумму температур для получения в дальнейшем средней allTemperature += temperature[i]; } //пройдем по массиву и сравним каждый день с for (int i = 0; i < temperature.length; i++){ if ((allTemperature / days) < temperature[i]) { System.out.println("Среднемесячная температура: " + (allTemperature / days) + "Сº"); System.out.println("Температура выше суточной была в: " + (i+1) + " день = " + temperature[i] + "Сº"); } } } } 

    The conclusion is:

     Среднемесячная температура: 4Сº Температура выше суточной была в: 1 день = 6Сº Среднемесячная температура: 4Сº Температура выше суточной была в: 3 день = 8Сº Среднемесячная температура: 4Сº Температура выше суточной была в: 5 день = 5Сº Среднемесячная температура: 4Сº Температура выше суточной была в: 6 день = 8Сº 
       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.