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-------------");
}
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:
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]
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]