Me ajudem por favor

Fiz esse código de um exercício proposto e até então eu preciso mostrar no final quantos homens com mais de 18 anos e cabelo castanho e quantas mulheres entre 25 e 30 anos e tem cabelos loiros. Depois que eu escolher a resposta “N” ele tem que imprimir o que eu disse ali de homens e mulheres etc…

import java.util.Scanner;

public class SeletorDePessoas {

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	
	int idade, CorCabelo, H18, M25;
	String sexo, resposta;
	
do {
	System.out.println("==========================");
	System.out.println("    SELETOR DE PESSOAS    ");
	System.out.println("==========================");
	System.out.print("Qual o Sexo? [M/F] ");
	sexo = sc.next();
	System.out.print("Qual a idade? ");
	idade = sc.nextInt();
	System.out.println("Qual a cor do Cabelo?" );
	System.out.println("----------------------");
	System.out.println("[1] Preto");
	System.out.println("[2] Castanho");
	System.out.println("[3] Loiro");
	System.out.println("[4] Ruivo");
	CorCabelo = sc.nextInt();
	
	switch (CorCabelo){
	case 1:
		do {	
			CorCabelo = 1;
			CorCabelo = CorCabelo + 1;
		} while (CorCabelo <= 1);
			break;
	case 2:
		do {
			CorCabelo = 2;
			CorCabelo = CorCabelo + 1;
		} while (CorCabelo <= 2);
			break;
	case 3:
		do {	
			CorCabelo = 3;
			CorCabelo = CorCabelo + 1;
		} while (CorCabelo <= 3);
			break;
	default:
		do {	
			CorCabelo = 4;
			CorCabelo = CorCabelo + 1;
		} while (CorCabelo <= 4);
			break;
	}
	System.out.print("Quer continuar? [S/N] ");
	resposta = sc.next();
} while (!"N".equals(resposta));
if (sexo == "M" && idade > 18 && CorCabelo == 2) {
	H18 = H18 + 1;
}
if (sexo == "F" && idade >= 25 && idade <= 30 && CorCabelo == 3) {
	M25 = M25 + 1;
}
System.out.println("------------------------------------");
System.out.println(" RESULTADO FINAL");
System.out.println("------------------------------------");
System.out.println("Total de homens com mais de 18 e cabelos castanhos "+ H18);
System.out.println("Total de mulheres entre 25 e 30 e cabelos loiros "+ M25);	
	
	sc.close();
}

}

Ainda há no seu código comparação entre strings usando ==. Mude todos para usar equals.

Corrigi, desculpa não me atentei, mas ainda sim não sei como colocar o final pra imprimir.

Essa contagem tem que estar dentro do seu laço de repetição, caso contrário ele só vai contabilizar o último registro movimentado.

1 curtida

Você também pode usar arrays para fazer o exercício… Exemplo:

import java.util.Scanner;

public class HomemEMulher {
	public static void main(String[] args){
		short numeroEntrevista;
		short contagemHomem = 0;
		short contagemMulher = 0;
		char[] sexos;
		short[] idades;
		short[] coresCabelo;
		
		Scanner leitor = new Scanner(System.in);
		
		System.out.print("\nNúmero de entrevistas: ");
		numeroEntrevista = leitor.nextShort();
		
		sexos = new char[numeroEntrevista];
		idades = new short[numeroEntrevista];
		coresCabelo = new short[numeroEntrevista];
		
		System.out.println("\nDados Pessoais");
		for(short i = 0; i < numeroEntrevista; i++){
			System.out.print("\nSexo [M/F]: ");
			sexos[i] = leitor.next().charAt(0);
			
			System.out.print("Idade: ");
			idades[i] = leitor.nextShort();
			
			System.out.println("Cor do cabelo: ");
			System.out.println("1- Castanho\n2-Loiro\n3-Preto\n4-Ruivo\n");
			System.out.print("Opção escolhida: ");
			coresCabelo[i] = leitor.nextShort();
		}
		
		for(short i = 0; i < numeroEntrevista; i++){
			if(sexos[i] == 'm' || sexos[i] == 'M'){
				if(idades[i] > 18 && coresCabelo[i] == 1)
					contagemHomem++;
				
			}else if(sexos[i] == 'f' || sexos[i] == 'F'){
				if((idades[i] > 25 || idades[i] < 30) && coresCabelo[i] == 2)
					contagemMulher++;
			}
		}
		
		System.out.println("\nHomens com mais de 18 anos e cabelo castanho: " + contagemHomem);
		System.out.println("Mulheres entre 25 e 30 anos e loiras: " + contagemMulher);
	}
}
1 curtida