Ajuda com programa

Preciso de ajuda para fazer esse código funcionar,a parte que está travada com barras //, não funciona e eu não consigo entender porque,é a parte das mulheres.A parte dos homens está correto.Esta parte que travei funciona de maneira errada.Por favor alguém me ajuda,obrigado.

[code]import java.util.Scanner;

class tarefa{

public static void main (String[] args) {  
    Scanner entrada = new Scanner(System.in);  
    int habitantes = 0;  
    int masculinos = 0;  
    int menoresMasculinos = 0;  
    int mulheres =0;
    int mulheresEntre18e35anos =0;
    int mulheresMaioresque35 =0;
    String resposta;  
      
    do {  
        
        System.out.println("Digite o sexo (F ou M): ");  
        String sexo = entrada.nextLine().substring(0, 1); 
        
        
        System.out.println("Digite a cor dos olhos (A, V, P ou C): ");  
         String cordosolhos =  entrada.nextLine();
        
        System.out.println("digite a cor dos cabelos (P , L , C):  ");
         String cordoscabelos =  entrada.nextLine();
         
         
        System.out.println("Digite a idade: ");  
        int idade = entrada.nextInt();  
        entrada.nextLine();// ignorar a mudança de linha 
        
          
        habitantes += 1; 
         if ( sexo.equalsIgnoreCase("f")) {  
            mulheres += 1;
         }
        //if (idade < 35 && sexo.equalsIgnoreCase("M")) {  
           // mulheres += 1; 
        //}
        if (sexo.equalsIgnoreCase("M")) {  
            masculinos += 1;  
        }  
        if (idade < 18  && sexo.equalsIgnoreCase("F")) {  
            menoresMasculinos += 1;  
        } 
        // if (idade  <18 && sexo.equalsIgnoreCase("F")) {  
           // mulheres += 1;
           //}
         //if (idade  >=35 && sexo.equalsIgnoreCase("F")) {  
           // mulheresMaioresque35 = 1;
            
         //}
         

        System.out.println();  
        System.out.println("Deseja continuar? (S/N)");  
        resposta = entrada.nextLine().substring(0,1);  
    } while (resposta.equalsIgnoreCase("s"));  
      
    System.out.println();  
    System.out.printf("Habiatntes:    %d%n", habitantes);
    System.out.printf("mulheres:    %d (%5.1f%%)%n",   
                       mulheres, 100.0*mulheres/habitantes);
    System.out.printf("Masculinos:    %d (%5.1f%%)%n",   
                       masculinos, 100.0*masculinos/habitantes);  
    System.out.printf("Menores masc.: %d (%5.1f%%)%n",   
                       menoresMasculinos, 100.0*menoresMasculinos/habitantes);
    //System.out.printf("mulheres idade entre18 e 35:    %d (%5.1f%%)%n",   
                      // mulheres, 100.0*mulheres/habitantes);
     //System.out.printf("mulheres idade maior de 35:    %d (%5.1f%%)%n",   
                       //mulheres, 100.0*mulheres/habitantes);
      
    System.out.println("-------------FIM-------------");  
}  

}

[/code]

Quando o usuário escolhe ‘f’ (Femenino)
É incrementado a quantidade de mulheres, e quando o usuário diz que a mulher tem menos de 18 anos, novamente é incrementado a quantidade de mulheres?
Então se tiver 2 mulheres de 15 anos, teriam 4 mulheres segundo o código.

Como você pode ver, em ambos você está utilizando a mesma váriavel ‘mulheres

System.out.printf("mulheres idade entre18 e 35: %d (%5.1f%%)%n", mulheres, 100.0 * mulheres / habitantes); System.out.printf("mulheres idade maior de 35: %d (%5.1f%%)%n", mulheres, 100.0 * mulheres / habitantes);

Enquanto para o homens o qual está correto, você tem variáveis distintas para representar cada valor:

System.out.printf("Masculinos: %d (%5.1f%%)%n", masculinos, 100.0 * masculinos / habitantes); System.out.printf("Menores masc.: %d (%5.1f%%)%n", menoresMasculinos, 100.0 * menoresMasculinos / habitantes);

Sendo assim você deveria criar um ‘int’ ‘mulheresMenores’ e incrementar caso a idade seja menor de 18 no sexo Feminino, ou (> 18 && < 35).

Obs: Entendo que você está começando, acredito que seja até um trabalho de curso, porém recomendo você inicializar nome de classes com letra maiúscula, caso contrário você estará indo contra as regras de convenções do Java, resultando em possíveis futuros problemas.

Eu fiz o que voce disse e funcionou.Acho que poderia diminuir um pouco,mas não sei como ainda.Ficou assim:

[code] int habitantes = 0;
int masculinos = 0;
int menoresMasculinos = 0;
int mulheres =0;
int mulheresMaioresde18=0;
int mulheresMenores =0;
int mulheresMaioresque35=0;
int mulheresMenoresque35=0;
String resposta;

    do {  
        
        System.out.println("Digite o sexo (F ou M): ");  
        String sexo = entrada.nextLine().substring(0, 1); 
        
        
        System.out.println("Digite a cor dos olhos (A, V, P ou C): ");  
         String cordosolhos =  entrada.nextLine();
        
        System.out.println("digite a cor dos cabelos (P , L , C):  ");
         String cordoscabelos =  entrada.nextLine();
         
         
        System.out.println("Digite a idade: ");  
        int idade = entrada.nextInt();  
        entrada.nextLine();// ignorar a mudança de linha 
        
          
        habitantes += 1; 
         if ( sexo.equalsIgnoreCase("f")) {  
            mulheres += 1;
         }
        if (idade  < 18  && sexo.equalsIgnoreCase("f")) {  
           mulheresMenores +=1; 
        }
        if (sexo.equalsIgnoreCase("M")) {  
            masculinos += 1;  
        }  
        if (idade < 18  && sexo.equalsIgnoreCase("M")) {  
            menoresMasculinos += 1;  
        } 
        if (idade  >=18 && sexo.equalsIgnoreCase("F")) {  
            mulheresMaioresde18 += 1;
           }
         if (idade  >=35 && sexo.equalsIgnoreCase("F")) {  
            mulheresMaioresque35 = 1;
         }
             if (idade  >=35 && sexo.equalsIgnoreCase("F")) {  
            mulheresMenoresque35 = 1;
            
         }
         

        System.out.println();  
        System.out.println("Deseja continuar? (S/N)");  
        resposta = entrada.nextLine().substring(0,1);  
    } while (resposta.equalsIgnoreCase("s"));  
      
    System.out.println();  
    System.out.printf("Habiatntes:    %d%n", habitantes);
    System.out.printf("mulheres:    %d (%5.1f%%)%n",   
                       mulheres, 100.0*mulheres/habitantes);
    System.out.printf("Masculinos:    %d (%5.1f%%)%n",   
                       masculinos, 100.0*masculinos/habitantes);  
    System.out.printf("Menores masc.: %d (%5.1f%%)%n",   
                       menoresMasculinos, 100.0*menoresMasculinos/habitantes);
    System.out.printf("mulheresMenores:    %d (%5.1f%%)%n",   
                       mulheresMenores, 100.0*mulheresMenores/habitantes);
     System.out.printf("mulheresMaioresde18emenorque35:    %d (%5.1f%%)%n",   
                       mulheresMaioresde18, 100.0*mulheresMaioresde18/habitantes);
      System.out.printf("mulheresMaioresde35:    %d (%5.1f%%)%n",   
                       mulheresMaioresque35, 100.0*mulheresMaioresque35/habitantes);
     [/code]

Ainda tem um erro de lógica aqui:

 if (idade  >=35 && sexo.equalsIgnoreCase("F")) {    
               mulheresMaioresque35 = 1;  
          }  
 if (idade  >=35 && sexo.equalsIgnoreCase("F")) {    
               mulheresMenoresque35 = 1;  
                 
            } 

Você está setando o valor para 1. E porque quando ela tem a idade maior que 35 você seta o valor de menores que 35 para 1 também? ^^

Você poderia diminuir sim, pense bem. Você tem um contador de mulheres certo?
Você tem outro contador de mulheres Maiores que 35 também.
Então as mulheres menores de 35 seria a quantidade que sobrasse do total de mulheres menos as maiores de 35;
Ex: mulheresMenores = (mulheres - mulheresMaioresde35);

O mesmo se aplica aos homens.

Dica quando você estiver incrementando um valor de 1, você pode usar ‘++’ ao invés de ‘+= 1’;
Exemplo: mulheres++ é o mesmo que mulheres += 1, o inverso seria mulheres–.

Outra dica:
Quando você tem essa situação de ser ou não ser algum estado, você pode utilizar o if else.
Exemplo:

[code]int idade = 18;
boolean adulto;

if(idade < 18) // Se idade for menor que 18
adulto = false; // Adulto = falso
else // Senão
adulto = true; // Adulto = verdadeiro[/code]

Você está fazendo assim:

if(idade < 18) adulto = false; if(idade >= 18) adulto = true;

algumas dicas ai.
Nome de classe: Sempre com nome maiusculo…
portanto:

public class Tarefa{

e não ‘tarefa’.

Outra coisa:

 variavel += 1;

//pode ser substituito por:
variavel++;

outra coisa, vc ta lendo a linha inteira e pegar o substring pra ver F ou M…
não tem um ‘readChar’ ?? …Bom, nao lembro… só perguntando msmo

uma questão de preferencia, vc esta criando tudo assim:

     int num1 = 0;
     int num2 = 1; 

//poderia fazer assim:
    int num1 = 0, num2 = 1, num 3 = 0; 

bom…
acho que é isso