Seguinte, são dois usuarios, que vao precisar de uma senha de 6 ou mais digitos, um cpf e um endereço qualquer. O problema esta na senha…
A senha do primeiro usuario tem apenas 5 dígitos, portanto nao é aceita, quero que isso entre em um loop de for para ele digitar uma nova senha com 6 ou mais digitos, entenderam ? Como eu faço isso ?
A senha do segundo usuario tem 10 digitos, entao esta aceita…como eu faço um programa assim ? da forma mais simplificada e básica possivel ?
1 - Coloque entre as tags code, caso contrário, fica praticamente inviavél analisarmos seu código
2 - Tenha em mente que um laço de repetição necessita de uma condição tanto para continuar em loop quanto de parada.
Pense um pouco, se você diz que a senha deve possuir um número mínimo de caracteres e se o usuário digitar menos do isso, deve entrar em loop, o que se de fazer? Simples, pegue a variavél que representa a senha e a coloque como condição do seu laço de repetição.
Segue exemplo:
do {
String senha = "10101"; // tamanho 5 da String
// peça novamente a senha
while (senha < 6);
Abraços.
ViniGodoy
Se você não sabe usar a tag code, leia:
Outra coisa, não peça urgência no fórum. Dê um título descritivo para o seu tópico.
importjavax.swing.JOptionPane;publicclassLogin{publicstaticvoidmain(String[]args){Loginlogin=newLogin();//Crio o usuário1Usuariousuario1=newUsuario();//Crio o usuário2Usuariousuario2=newUsuario();//Preencho os usuários com os dadosusuario1.setNomeUsuario("Fabricio");usuario1.setCpf("[CPF removido]");usuario1.setEndereco("Avenida Paulista");//Abro uma caixa para o usuário preencher a senhausuario1.setSenha(JOptionPane.showInputDialog("Informe a Senha Usuário "+usuario1.getNomeUsuario()));//Preencho os usuários com os dadosusuario2.setNomeUsuario("Carlos");usuario2.setCpf("[CPF removido]");usuario2.setEndereco("Avenida Paulista");//Abro uma caixa para o usuário preencher a senhausuario2.setSenha(JOptionPane.showInputDialog("Informe a Senha Usuário "+usuario2.getNomeUsuario()));//Verifico a senha do usuario1 se tem 6 ou mais caracteresJOptionPane.showMessageDialog(null,login.verificaSenha(usuario1.getSenha(),usuario1.getNomeUsuario()));//Verifico a senha do usuario2 se tem 6 ou mais caracteresJOptionPane.showMessageDialog(null,login.verificaSenha(usuario2.getSenha(),usuario2.getNomeUsuario()));}//Metodo para verificar a senha retornando o resultadoprivateStringverificaSenha(Stringsenha,Stringusuario){if(senha.length()<6){return"Senha Inválida Para o Usuário: "+usuario;}return"Senha Aceita Para o Usuário: "+usuario;}}
Acho que é mais ou menos isso se ficar duvida posta ai !
Abç
masiero572
Então seria mais ou menos assim ?
do{
intsenha=5; //numero de digitos//colocarumasenhacom6digitosoumaiswhile(senha>=6);
guilherme.dio
na verdade deve usar o atributo lenght:
while(String.length<6)
nel
guilherme.dio:
na verdade deve usar o atributo lenght:
while(String.length<6)
Ops! Exato.
Como trata-se de uma String não faça o >, use o lenght como citado pelo colega :)
masiero572
opa galera, sou eu de novo, obrigado pela ajuda, estou evoluindo melhor agora…e com outra dúvida.
Quero fazer um cadastro aonde o CPF TEM que ter 11 dígitos, o usuario tem que colocar uma senha com mais de 6 dígitos, duas vezes sendo elas IGUAIS, ou seja se no primeiro campo de senha o cara por 1234567, no segundo campo ele tem que colocar 1234567 também, se nao volta pro loop…isso nao ta acontecendo, ele ta dando loop sem parar, me ajudem por favor…
importjavax.swing.JOptionPane;publicclassCompra{publicstaticvoidmain(String[]args){Compracompra=newCompra();Cadastrocadastro=newCadastro();Stringmensagem=null;while(true){cadastro.setNome(JOptionPane.showInputDialog("Nome do Usuário: "));cadastro.setIdade(JOptionPane.showInputDialog("Data de Nascimento dd/mm/aa: "));cadastro.setCpf(JOptionPane.showInputDialog("CPF: ")+(mensagem==null?" ("+mensagem+") ":"")+cadastro.getNome());mensagem=compra.verificaCpf(cadastro.getCpf());JOptionPane.showMessageDialog(null,"CPF CORRETO");cadastro.setSenha(JOptionPane.showInputDialog("Senha desejada: "));mensagem=compra.verificaSenha(cadastro.getSenha());cadastro.setSenha(JOptionPane.showInputDialog("Re-digite sua senha: "));mensagem=compra.verificaSenha(cadastro.getSenha());JOptionPane.showMessageDialog(null,"Senha exata");if(mensagem==null){break;}}}publicStringverificaCpf(Stringcpf){if(cpf==null){return"preencha o campo";}if(cpf.length()!=11){return"cpf inválido";}returnnull;}publicStringverificaSenha(Stringsenha){if(senha==null){return"preencha o campo abaixo: ";}if(senha.length()<6){return"Senha invalida";}if(senha!=senha){return"senha nao compatível com a anterior";}returnnull;}}
masiero572
detalhe, eu esqueci da instancia conta bancaria na classe compra, mas ela nao vai fazer diferença…
grato
masiero572
Galera, acho que dei uma progredida naquele programa anterior, da um up aii haha…a classe cadastro continua a mesma…
classe compra
importjavax.swing.JOptionPane;publicclassCompra{publicstaticvoidmain(String[]args){Compracompra=newCompra();Cadastrocadastro=newCadastro();Stringmensagem=null;while(true){cadastro.setNome(JOptionPane.showInputDialog("Nome do Usuário: "));cadastro.setIdade(JOptionPane.showInputDialog("Data de Nascimento dd/mm/aa: "));cadastro.setCpf(JOptionPane.showInputDialog("CPF: "+cadastro.getCpf()));mensagem=compra.verificaCpf(cadastro.getCpf());if(mensagem.length()==11){JOptionPane.showMessageDialog(null,"CPF correto");break;}cadastro.setCpf(JOptionPane.showInputDialog("Re-digite seu CPF"+cadastro.getCpf()));if(mensagem.length()==11){JOptionPane.showMessageDialog(null,"cpf beleuza");break;}if(mensagem.length()!=11){JOptionPane.showMessageDialog(null,"CPF inválido, tente novamente mais tarde");}}while(true){cadastro.setSenha(JOptionPane.showInputDialog("Senha desejada: "+cadastro.getSenha()));mensagem=compra.verificaSenha(cadastro.getSenha());if(mensagem.length()>=6){break;}cadastro.setSenha(JOptionPane.showInputDialog("Re-digite sua senha: "));if(mensagem==(String)mensagem){JOptionPane.showMessageDialog(null,"OK");break;}mensagem=compra.verificaSenha(cadastro.getSenha());JOptionPane.showMessageDialog(null,"Senha exata");if(mensagem==null){break;}}}privateStringverificaSenha(Stringsenha){if(senha.length()<6){return"senha incorreta";}if(senha!=(String)senha){return"senha incorreta";}returnnull;}publicStringverificaCpf(Stringcpf){if(cpf==null)return"preencha o campo";if(cpf.length()!=11){return"cpf inválido";}if(cpf.length()==11){return"cpf correto";}returnnull;}}
ta meio bagunçado e talz…eu uso o eclipse, peço ajuda a galera ai…o programa ta dando loop eterno no cpf ainda. eu digo ali em cima que se o cpf tiver exatamente 11 digitos, ele ta OK, mas quando eu coloco os 11 digitos no input do programa ele mesmo assim diz que ta invalido e taltaltal ou seja, != 11. VALEU!
Outra coisa, procure colocar apenas a validação de CPF dentro do loop, pois da forma que está fazendo toda hora o usuário tem que digitar nome, data de nascimento e CPF e neste caso a única coisa que vc deve validar se está correto é o CPF, os outros campos não importam mais…