Boa tarde pessoal, sou novo aqui no fórum e iniciante em java...
Meu professor passou o seguinte exercício:
Entrar com um nome, idade e sexo de 20 pessoas. Imprimir o nome se a pessoa for do sexo masculino e tiver mais de 21 anos.
Eu não sei como fazer para ele listar o nome da pessoa se o sexo é masculino.
vou postar aqui o meu código:
Bom a sugestão que tenho para você é armazene tudo dentro de um array:
int tamanhoDoArray = 20;
Pessoa[] pessoas = new Pessoa[tamanho];
Sendo Pessoa uma classe onde você irá colocar, nome, idade, sexo,… e depois fazer um for para ir lendo sua entrada do teclado e armazenando até chegar ao final de seu array e depois disso retornar da classe Pessoa suas variáveis se sexo for masculino e idade maior que 21 usando um if.
Flw
Poneis123
Qdo o usuario digitar idade e sexo, vc os terá em variaveis… logo abaixo vc compara se essas variaveis tem o valor que deseja com um IF e mostra os dados… algo assim
Se idade > 21 e Sexo == Masculino,
Então Mostra o nome e idade
um detalhe: Seu codigo não está limitando a 20 cadastros. Recomendo que naquele while (!opcao.equals("3")) vc deixe assim:
Então gente obrigado pela ajuda!
olhem como eu fiz:
packageexercicio10;importjavax.swing.JOptionPane;publicclassMain{publicstaticvoidmain(String[]args){Stringnome,sexo;Stringopcao="";intqtdCadastrados=0;while(!opcao.equals("2")){Integerop=newInteger(JOptionPane.showInputDialog("1-Cadastrar, 2-Sair"));while(op==1&&qtdCadastrados<2){nome=JOptionPane.showInputDialog("Nome:");Integeridade=newInteger(JOptionPane.showInputDialog("Idade:"));sexo=JOptionPane.showInputDialog("Sexo M ou F:");if(sexo=="M"&&idade>21){System.out.println("Nome: "+nome);break;}}if(op==2){System.exit(0);}}}}
só q ele ta dando um pau... no qtdCadastrados eu colokei 2 para fazer um teste, mas ele não obedece só fica pedindo para inserir outro nome, idade etc...
o que será que pode ser?
o resto está correto?
Poneis123
Seu while ta entrando em loop infinito.
Olha as condições para entrar no loop while (op == 1 && qtdCadastrados < 2) no laço vc não atualiza os valores, então essas condições sempre são válidas.
mano8801
packageexercicio10;importjavax.swing.JOptionPane;publicclassMain{publicstaticvoidmain(String[]args){Stringnome,sexo;Stringopcao="";intqtdCadastrados=0;while(!opcao.equals("2")){Integerop=newInteger(JOptionPane.showInputDialog("1-Cadastrar, 2-Sair"));while(op==1&&qtdCadastrados<20){// para 20 registros nome=JOptionPane.showInputDialog("Nome:");Integeridade=newInteger(JOptionPane.showInputDialog("Idade:"));sexo=JOptionPane.showInputDialog("Sexo M ou F:");if(sexo=="M"&&idade>21){System.out.println("Nome: "+nome);qtdCadastrados++;op=JOptionPane.showInputDialog("1-Cadastrar, 2-Sair");break;}}if(op==2){System.exit(0);}}}}
Olá, teste se é assim que você deseja.
Note que desta maneira, imprimirá na tela, em caso de maior de 21 anos, logo após armezenaro valor na varável.
Creio que a forma mais eficiente(sem a utilização de POO) seria com 3 arrays, como já foi postado.
Olá, teste se é assim que você deseja.
Note que desta maneira, imprimirá na tela, em caso de maior de 21 anos, logo após armezenaro valor na varável.
Creio que a forma mais eficiente(sem a utilização de POO) seria com 3 arrays, como já foi postado.
Po, num sei pq fazer pro cara, bastava dar dicas e ele ir aprendendo e fazendo. Alem disso, seu código ta com erro de compilação, o showInputDialog() retorna String e o op é um Integer… Mesmo corrigindo o seu erro não funcionaria…
Henrique Petry Sempre que for comparar o valor de uma String, utilize o método equals(), no seu if:if (sexo == "M" && idade > 21) ele nunca vai entrar pq ele compara o endereço do objeto e não o valor, vc precisa usar assim: sexo.equals("M")
H
Henrique_Petry
Arrumei a parte do while, mais agora surgiu outro problema!
ele não está me mostrando os nomes cadastrados... :/
não sei o que pode ser!
vou postar aqui mais uma vez o código
packageexercicio10;importjavax.swing.JOptionPane;publicclassMain{publicstaticvoidmain(String[]args){Stringnome,sexo;Stringopcao="";intqtdCadastrados=0;while(!opcao.equals("2")){Integerop=newInteger(JOptionPane.showInputDialog("1-Cadastrar, 2-Sair"));while(op==1&&qtdCadastrados<1){nome=JOptionPane.showInputDialog("Nome:");Integeridade=newInteger(JOptionPane.showInputDialog("Idade:"));sexo=JOptionPane.showInputDialog("Sexo M ou F:");if(sexo=="M"&&idade>21){JOptionPane.showMessageDialog(null,"Nome: "+nome);break;}qtdCadastrados=qtdCadastrados+1;}if(op==2){System.exit(0);}}}}
H
Henrique_Petry
Opá! agora funcionou com o equals no sexo…
eu não tinha visto as outras respostas do equals por isso postei denovo o código.