package Exercicio21;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
String nome,sexo,saude,R,B;
Short homem=0,mulher=0;
int total,num, idade,totApto=0,totInaptos=0;
Scanner leitor = new Scanner (System.in);
for(int i=0; i<5; i++){
System.out.println("Digite o seu nome: ");
nome=leitor.nextLine();
System.out.println("Digite o sexo (M/F): ");
sexo=leitor.nextLine();
if (sexo.equals("M")||sexo.equals("m")){
homem++;
}else if (sexo.equals("F")||sexo.equals("f")){
mulher++;
}
System.out.println("Digite o estado de saude B (Boa) ou R (Ruim): ");
saude =leitor.next();
if (saude.equals("B")||saude.equals("b"))
{
System.out.println(" Apto para o alistamento!");
}else if(saude.equals("R")||saude.equals("r")){
System.out.println(" Não está apto para o alistamento!");
}
{
System.out.println("Digite a idade: ");
idade=leitor.nextInt();
if(idade>=18 && idade<=45){
System.out.println("Idade disponivel para alistamento! ");
idade=leitor.nextInt();
}else{ System.out.println("Idade não disponivel para o alistamento!");
idade=leitor.nextInt();
}
}
}
totApto=totApto+1;
totInaptos=totInaptos+1;
total=totApto+totInaptos;
System.out.println("Foram filtrados"+total+ "pessoas!");
System.out.println("O total de aptos para o Serviço Militar"+totApto+ "!");
System.out.println("O total de Inaptos para o Serviço Militar"+totInaptos+ "!");
}
}
O que tá acontecendo? E qual é o resultado esperado??
Isso é Java e não javascript.
Ele roda o programa só uma vez, e não 5 como pedido na função.
Nessa parte.
Apague esses dois idade=leitor.nextInt();
if(idade>=18 && idade<=45){
System.out.println("Idade disponivel para alistamento! ");
}else{
System.out.println("Idade não disponivel para o alistamento!");
}
O que está acontecendo ele espera que o usuário digite a idade denovo.
Porém, seu código ficou com aquele bugzinho de quando se usa o mesmo Scanner pra pegar int e depois String
1 curtida
Saquei, vlw
Isso não é bug, é comportamento esperado.
O único método do Scanner que consome a quebra de linha gerada ao pressionar o enter, é o nextLine()
.
Então o mais adequado é, quando usar o Scanner para ler o System.in, usar somente o método nextLine()
.