Программа должна вывести количество дождливых дней за месяц. Что надо дописать, чтоб счетчик заработал?

public class Praktikum {
    public static void main(String[] args) {
        WeatherCalendar calendar = new WeatherCalendar("Октябрь", 31);
        String[] octoberWeather = new String[]{
                "Солнечно",
                "Дождь",
                "Пасмурно",
                "Дождь",
                "Дождь",
                "Облачно",
                "Солнечно",
                "Дождь",
                "Пасмурно",
                "Солнечно",
                "Солнечно",
                "Облачно",
                "Солнечно",
                "Дождь",
                "Пасмурно",
                "Солнечно",
                "Солнечно",
                "Облачно",
                "Облачно",
                "Облачно",
                "Облачно",
                "Дождь",
                "Дождь",
                "Облачно",
                "Солнечно",
                "Дождь",
                "Пасмурно",
                "Дождь",
                "Солнечно",
                "Солнечно",
                "Солнечно",
                "Солнечно",
                "Облачно"
        };
        int rainyDays = 0;

        for (int i = 0; i < calendar.numberOfDays; i++) {
            if (octoberWeather[i].equals("Дождь")) {
                calendar.addRainyDay(rainyDays);
            }
        }

        // Проверить, был ли месяц дождливым. Если да - установить значение isRainyMonth
        if (calendar.rainyDays > 15) {
            calendar.isRainyMonth = true;
        }

        System.out.println(calendar.month + " " + calendar.year + " года. "
                + calendar.rainyDays + " дней шёл дождь.");

        // Проверить значение isRainyMonth
        if (calendar.isRainyMonth) {
            System.out.println("Это был дождливый месяц.");
        } else {
            System.out.println("Этот месяц был довольно сухим.");
        }
    }
}

class WeatherCalendar {
    String month;
    int numberOfDays;

    int rainyDays;
    boolean isRainyMonth = false;
    int year = 2020;

    public WeatherCalendar(String monthName, int monthNumberOfDays) {
        month = monthName;
        numberOfDays = monthNumberOfDays;
    }

    public void addRainyDay(int rainyDays) {
        rainyDays ++;
    }
}

Ответы (1 шт):

Автор решения: Дмитрий Алексеенко

В классе

WeatherCalendar

у вас срабатывает увеличение счетчика для переданного аргумента, а не для переменной класса, то есть в методе

public void addRainyDay(int rainyDays)

вам нужно исправить

rainyDays ++; на this.rainyDays ++;

чтобы увеличение было у переменной класса.

→ Ссылка