import java.util.*;
import java.io.*;
public class Exercicio02{
public static void main (String[] args){
int idade,masc,fem,sim,nao,masc45,fem21,menor,maior,
maiorid,menorid,menormulher;
Double idademed,porcenhomens,idadeexp,masctotal;
String sexo,M,F,experiencia,S,N;
Scanner ler = new Scanner(System.in);
masc=0;
masctotal=0.0;
fem=0;
sim=0;
nao=0;
idadeexp=0.0;
idademed=0.0;;
fem21=0;
masc45=0;
menorid=0;
menor=99999999;
maior=1;
idade=1;
while(idade!=0){
//
System.out.println("\nDigite Seu Sexo Com 'M' ou 'F': \n");
sexo=ler.next();
sexo=sexo.toUpperCase();//Trasformar a Letra em Maiuscula.
System.out.println("\nDigite Seu Voce Possui Experiencia:( 'S' ou 'N') \n");
experiencia=ler.next();
System.out.println("\nDigite sua Idade: \n");
idade=ler.nextInt();
if (sexo =="M") {
masc=masc;
masctotal++;
}
else if (sexo =="F") {
fem++;
}
else if (experiencia == "S") {
sim++;
}
else if (experiencia == "N") {
nao++;
}
else if (idade>1 && experiencia =="S" && sexo == "M") {
idadeexp++;
idademed=idade/idadeexp;
}
else if (idade>45 && sexo == "M") {
masc45++;
}
else if (idade<=21 && sexo =="F" && experiencia == "S") {
fem21++;
}
else if (idade>maior) {
maiorid=idade;
}
else if (idade<menor) {
menorid=idade;
}
}
porcenhomens=masc45*100/masctotal;
System.out.println("\n O NUMERO DE CANDIDATOS DO SEXO FEMININO E DE: \n"+fem);
System.out.println("\n O NUMERO DE CANDIDATOS DE SEXO MASCULINO E DE: \n"+masc);
System.out.println("\n A IDADE MEDIA DOS HOMENS QUE JA POSSUEM EXPERIENCIA: \n"+idademed);
System.out.println("\n A PORCENTAGEM DE HOMENS COM MAIS DE 45 DENTRE TODOS E DE: \n"+porcenhomens);
System.out.println("\n O TOTAL DE MULHERES COM IDADE INFERIOR A 21 DENTRE O TOTAL E DE: \n"+fem21);
System.out.println("\n A MENOR IDADE DENTRE AS MULHERES QUE JA POSSUEM EXPERIENCIA E A: \n"+menorid);
System.out.println(""+masc);
System.out.println(""+masctotal);
System.out.println(""+fem);
System.out.println(""+fem21);
System.out.println(""+sim);
System.out.println(""+nao);
System.out.println(""+masc45);
System.out.println(""+fem21);
System.out.println(""+menorid);
}
}
Compare todas as Strings utilizando o método equals
ao invés ==
.
Já teve essa discussão de .equals() e == no forum se quiser da uma olhada
link: .equals() ou ==
Em resumo o == é utilizado para tipos primitivos e o .equals() é utilizado para comparar objetos, e se lembrar que td q se começa com letra maiscula é uma classe vamos ver que string é uma então quando se cria -> String sexo
, vc está criando um objeto, no geral usando o .equals() vc vai comparar o conteúdo dos objetos.
Estava analizando seu código e percebi uso inadequado de else if()
, fazendo que partes do códigos não seja executadas e a falta do uso do CamelCase Ajuda em camelcase em Java
Método main:
public static void main (String[] args){
int idade,masc,fem,sim,nao,masc45,fem21,menor,maior,
maiorid,menorid,menormulher;
double idademed,porcenhomens,idadeexp,masctotal;
String sexo,experiencia;
Scanner ler = new Scanner(System.in);
masc = 0;
masctotal = 0.0;
fem = 0;
sim = 0;
nao = 0;
idadeexp = 0.0;
idademed = 0.0;
double idadeMediaMasculina = 0;
fem21 = 0;
masc45 = 0;
maiorid = 1;
menorid = 9999999;
while(true){ //Cria um loop infinito
//
System.out.println("______________Pessoa______________");
System.out.print("Digite Seu Sexo Com 'M' ou 'F': ");
sexo = ler.next();
sexo = sexo.toUpperCase();//Trasformar a Letra em Maiuscula.
if(!"M".equals(sexo) && !"F".equals(sexo)){ //Caso sexo esteja errado, ou seja se diferente de sexo == a m e sexo == a f ele repete o while
System.out.println("Opção invalida!");
continue; //volta para o inicio do while
}
System.out.print("Digite Seu Voce Possui Experiencia:( 'S' ou 'N'): ");
experiencia = ler.next();
experiencia = experiencia.toUpperCase(); //Tem q transformar em letra maiuscula tb
if(!"S".equals(experiencia) && !"N".equals(experiencia)){ //Caso sexo esteja errado
System.out.println("Opção invalida!");
continue; //volta para o inicio do while
}
System.out.print("Digite sua Idade: ");
idade = ler.nextInt();
if(idade <= 0){
System.out.println("Idade tem que ser maior que 0 para cadastrar uma pessoa");
continue;
}
System.out.println("---------------------------------\n");
if ("M".equals(sexo)) {
// masc = masc; Você só esta fazend masc receber o valor 0
masc ++; // pq duas variaveis recebem valor n poderia usar só uma?
masctotal++;
}else if ("F".equals(sexo)) {
fem++;
}//else -> se vc uma das condições anteriores forem verdadeiras ele não vai checar experiencia, por isso não usa else aqui
if ("S".equals(experiencia)) {
sim++;
}else if ("N".equals(experiencia)) {
nao++;
} //else -> msm motivo q a anterior, vc ta comparando outros dados e n uma grande extensão do msm
if (idade > 1 && "S".equals(experiencia) && "M".equals(sexo)) {
idadeexp++;
// idademed = idade/idadeexp;
//Faz a média errado, divide a ultima idade digitada e divide pelo numero de homens com experiencia cadastrados
idademed += idade; //armazena a soma das idades
idadeMediaMasculina = idademed/idadeexp; // calcula a média td vez q um homem com experiencia é cadastrado
}//else -> se a condição anterior for atendida n dara valor a masc45, por isso n usa else
if (idade>45 && "M".equals(sexo)) {
masc45++;
}else if (idade<=21 && "F".equals(sexo) && "S".equals(experiencia)) {
fem21++;
//Já que só quer a menor idade feminina, aqui ele vai pegar as maiores e menores idades femininas
if (idade > maiorid) { //Tem que comparar com idade que ele já recebeu, senão ele vai ficar sobreescrevendo a maior e a menor idade
maiorid = idade;
} //else -> a menor idade pode ser a maior idade, por isso n usa o else
if (idade < menorid) {
menorid = idade;
}
}//else -> else if é se as condições anteriores não foram atendidas continue checando
System.out.print("Cadastrar outra pessoa? (S/N): ");
String resp = ler.next();
resp = resp.toUpperCase();
System.out.println("");
if("N".equals(resp))break; //Quebra o loop, apenas quando digitado n ou N
}
porcenhomens= masc45*100/masctotal;
System.out.println("\n O NUMERO DE CANDIDATOS DO SEXO FEMININO E DE: " + fem);
System.out.println("\n O NUMERO DE CANDIDATOS DE SEXO MASCULINO E DE: " + masc);
System.out.println("\n A IDADE MEDIA DOS HOMENS QUE JA POSSUEM EXPERIENCIA: " + idadeMediaMasculina);
System.out.println("\n A PORCENTAGEM DE HOMENS COM MAIS DE 45 DENTRE TODOS E DE: " + porcenhomens);
System.out.println("\n O TOTAL DE MULHERES COM IDADE INFERIOR A 21 DENTRE QUE POSSUI EXPERIENCIA: " + fem21);
System.out.println("\n A MENOR IDADE DENTRE AS MULHERES QUE JA POSSUEM EXPERIENCIA E A: " + menorid);
System.out.println("Mans: " + masc);
System.out.println("Total mans: " + masctotal);
System.out.println("Womans: " + fem);
System.out.println("F <=21: " + fem21);
System.out.println("Sim: "+sim);
System.out.println("Não: " + nao);
System.out.println("Masc >= 45: " + masc45);
//System.out.println("" + fem21); //já esta exibindo essa variavel
System.out.println("Maior: " + maiorid);
System.out.println("Menor: " + menorid);
}