package idadepessoas;
import java.util.Scanner;
//QUESTÃO NÚMERO 3
public class IdadePessoas {
public static void main(String[] args) {
Scanner leitor = new Scanner(System.in);
int quantidade = 0;
double numeroatual = 0;
double crianca = 0;
double adolescente = 0;
double jovem = 0;
double adulto = 0;
double idoso = 0;
while (true) {
System.out.println("Digite quantas idades quiser, caso queira parar tecle o número (0): ");
numeroatual = leitor.nextInt();
if(numeroatual == 0){
break;
}
quantidade += 1;
if(quantidade <= 12){
numeroatual = crianca;
continue;
}
if(numeroatual <= 18){
numeroatual = adolescente;
}
if(numeroatual <= 25){
numeroatual = jovem;
}
if(numeroatual <= 59){
numeroatual = adulto;
}
if(numeroatual > 60){
numeroatual = idoso;
}
}
System.out.println("A quantidade de crianças foram: " +crianca);
System.out.println("A quantidade de adolescentes foram: " +adolescente);
System.out.println("A quantidade de jovens foram: " +jovem);
System.out.println("A quantidade de adultos foram: " +adulto);
System.out.println("A quantidade de idosos foram: " +idoso);
}
}
Com while(true)
o código não pára, ou seja, loop infinito já que não identifiquei no código nenhuma condição ou declaração de parada. Além disso você poderia usar um array de inteiros ou mesmo de short
em vez de várias variáveis double
, já que não faz sentido idades decimais. Faz sentido idade = 45,562323
, por exemplo?
Vdd, saquei
O while está correto, uma vez que tens o break quando o número é 0.
Mas nunca estás a alterar o valor das tuas quantidades, nos prints estas vão ser sempre 0.
Nos teus ifs queres aumentar a tua quantidade correspondente em 1 e não atribuir qualquer valor ao teu “numeroatual”
Depois de corrigires esse problema, e mantendo a tu lógica, se eu tiver 15 anos (quem dera) sou, ao mesmo tempo, adolescente, jovem e adulto?
E se tiver 60, não sou nada?