Я бы посоветовал вам использовать интерфейсы и потоки Java 8. Таким образом, вы избегаете много ifs, что делает код менее многословным, и введение нового класса становится тривиальным.
Даже в небольших или простых проектах рассмотрите интерфейсно-ориентированное программирование, которое заставляет вас задуматься, прежде чем объявлять новый метод.
Season.java
public abstract class Season {
public <T extends Season> Stream season(Integer temperature) {
if (temperature <= max() && temperature >= min()) {
return Stream.of(this);
}
return Stream.empty();
}
public abstract Integer max();
public abstract Integer min();
@Override
public abstract String toString();
}
Summer.java
public class Summer extends Season {
@Override
public String toString() {
return "Summer";
}
@Override
public Integer max() {
return 90;
}
@Override
public Integer min() {
return 70;
}
}
Spring.java
public class Spring extends Season {
@Override
public String toString() {
return "Spring";
}
@Override
public Integer max() {
return 69;
}
@Override
public Integer min() {
return 40;
}
}
Main.java
public class Main {
public static void main(String[] args) {
Collection<Season> seasons = new ArrayList();
seasons.add(new Summer());
seasons.add(new Winter());
seasons.add(new Season() {
@Override
public Integer max() {
return 39;
}
@Override
public Integer min() {
return 10;
}
@Override
public String toString() {
return "Winter";
}
});
String response = JOptionPane.showInputDialog(null, "Enter the temperature");
int temperature = Integer.parseInt(response);
String msg = "Based on the temperature of %d it is most likely %s%n";
seasons.stream().forEach(s -> {
s.season(temperature).findAny().ifPresent(t -> {
String message = String.format(msg, temperature, t);
JOptionPane.showMessageDialog(null, message);
});
});
}
}