[quote=lavreh]Salve, salve!
Estou iniciando no mundo dos objeto e, resolvendo uma lista de exercícios,
[/quote]
O interessante é que vc não usou objetos.
Vamos traduzir isto em objetos:
Foi pedido que se calcule o IMC corporal de um indivíduo. Há uma tabela com faixas predefinidas e distintas para homens e mulheres.
então vamos começar com IMC
O IMC é um numero, mas no seu cado vc quer a classificação. Isto pede um enum
public enum ICMClassification {
    ABAIXO_PESO,
    PESO_IDEAL,
    UM_POUCO_ACIMA,
    ACIMA_PESO,
    OBESO;
}
agora  “tabela de faixas”
public class Faixa {
    
 private double menor;
 private double maior;
 public Faixa (double menor, double maior, ICMClassification  classification){
     this.menor = menor;
     this.maior = maior;
     this.classification = classification;
}
  public ICMClassification  getClassification(){
         return classification;
  }
  public boolean contains(double value){
       return value >= menor || value <= maior;
  } 
}
// tabela de faixas
public class Tabela {
   private List<Faixa> faixas = new ArrayList<Faixa>();
   public void addFaixa(Faixa faixa){
            this.faixas.add(faixa);
  }
   public ICMClassification  getClassificacao(double icm){
              for (Faixa faixa : faixas){
                         if (faixa.contains(icm)){
                                 return faixa.getClassification();
                        }
              }
              // se chegou aqui nenhuma faixa foi escolhida, o que é um erro
             throw new IllegalArgumentException(icm + " não está em nenhuma faixa" );
   }
}
Agora precisamos de um objeto que racterize o sujeito
public enum Genero {
   FEMENINO,
   MASCULINO
}
public class Sujeito {
      private Genero genero;
       private double icm;
       public Sujeito ( Genero genero , double icm){
             this.genero = genero; 
             this.icm = icm;
       }
       public  Genero  getGenero (){
       return genero;
      }
     public  double getICM (){
       return icm;
      }
}
Agora juntamos tudo num ICMClassificationCalculator
public class ICMClassificationCalculator {
       Map<Genero, Tabela > tabelas = new HashMap<Genero, Tabela>();
       
       public  ICMClassificationCalculator (){
              // monta as tabelas com os valores
              Tabela masculina = new Tabela();
                 masculina.addFaixa(new Faixa(0, 20.7, ABAIXO_PESO));
                 // etc. .. 
                tabela.put(Genero.MASCULINO, masculina);
             // semelhante para a femenina
       }
      public ICMClassification calculateFor(Sujeito sujeito){
                 return tabelas.get(sujeito.getGenero()).getClassificacao(sujeito.getICM());
      } 
}
E usaria assim :
 Sujeito sujeito  = new Sujeito(Genero.MASCULINO, 23.8);
 ICMClassificationCalculator calculator = new ICMClassificationCalculator ();
  ICMClassification classificao = calulator.calculateFor(sujeito);
  switch (classificao ){
  case ABAIXO_PESO:
   System.out.println("Abaixo do peso."); 
   break; 
 case PESO_IDEAL:
   System.out.println("Peso ideal.");  
   break; 
  // etc..
 } 
   
Veja que vc só usa um if . O truque é estruturar o codigo para usar for e map e métodos boolenos como contains.
Este modelo é OO, é elegante e o desempenho usando ifs e for é depresável em relação à legibilidade e entendimento.
Usando enum vc se livra de usar Strings para opções (o que tornar o codigo POS  - programação orientada a string) e permite um melhor entendimento.
Vc pode achar que é sobre-engenharia, mas apenas usamos o processo padrão. Analizar as entidades, trasnformá-las em classes e compor as responsabilidades.
Poderiamos agora simplificar algumas coisas, mas o objetivo aqui é vc entender o que é OO. usar ifs não é OO.