Программа должна вывести количество дождливых дней за месяц. Что надо дописать, чтоб счетчик заработал?
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 ++;
чтобы увеличение было у переменной класса.