Nao achei algum tópico parecido com esse, portanto estou criando um, qualquer coisa me redirecione ao mais adequado.
Vou explicar o que eu quero. Quero fazer um programa de login BEM BÁSICO. Segue o meu programa…
public class Login {
String nomeUsuario;
String nomeusuario;
static int senha;
static int sEnha ;
String cpf;
String cPf;
String endereco;
String endereço;
public static void main(String[] args) {
Login cadastro = new Login();
cadastro.nomeUsuario= “Fabrício”;
cadastro.senha = 5;
loop1:
for(int senha = 5; senha >=6; senha++){
if(senha <= 6){
continue loop1;
}
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);
private String nomeUsuario;
private String senha;
private String cpf;
private String endereco;
public String getNomeUsuario() {
return nomeUsuario;
}
public void setNomeUsuario(String nomeUsuario) {
this.nomeUsuario = nomeUsuario;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}[/code]
Classe Login
import javax.swing.JOptionPane;
public class Login {
public static void main(String[] args) {
Login login = new Login();
//Crio o usuário1
Usuario usuario1 = new Usuario();
//Crio o usuário2
Usuario usuario2 = new Usuario();
//Preencho os usuários com os dados
usuario1.setNomeUsuario("Fabricio");
usuario1.setCpf("123.123.123-00");
usuario1.setEndereco("Avenida Paulista");
//Abro uma caixa para o usuário preencher a senha
usuario1.setSenha(JOptionPane
.showInputDialog("Informe a Senha Usuário " + usuario1.getNomeUsuario()));
//Preencho os usuários com os dados
usuario2.setNomeUsuario("Carlos");
usuario2.setCpf("123.123.123-00");
usuario2.setEndereco("Avenida Paulista");
//Abro uma caixa para o usuário preencher a senha
usuario2.setSenha(JOptionPane
.showInputDialog("Informe a Senha Usuário " + usuario2.getNomeUsuario()));
//Verifico a senha do usuario1 se tem 6 ou mais caracteres
JOptionPane.showMessageDialog(null, login.verificaSenha(usuario1.getSenha(), usuario1.getNomeUsuario()));
//Verifico a senha do usuario2 se tem 6 ou mais caracteres
JOptionPane.showMessageDialog(null, login.verificaSenha(usuario2.getSenha(), usuario2.getNomeUsuario()));
}
//Metodo para verificar a senha retornando o resultado
private String verificaSenha(String senha, String usuario){
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 !
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…
CLASSE CADASTRO
public class Cadastro {
private String nome;
private String idade;
private String cpf;
private String contabancaria;
private String endereco;
private String senha;
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getIdade() {
return idade;
}
public void setIdade(String idade) {
this.idade = idade;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getContabancaria() {
return contabancaria;
}
public void setContabancaria(String contabancaria) {
this.contabancaria = contabancaria;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}
CLASSE COMPRA
import javax.swing.JOptionPane;
public class Compra {
public static void main(String[] args) {
Compra compra = new Compra();
Cadastro cadastro = new Cadastro ();
String mensagem = 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;
}
}
}
public String verificaCpf(String cpf) {
if (cpf == null) {
return "preencha o campo";
}
if (cpf.length() != 11) {
return "cpf inválido";
}
return null;
}
public String verificaSenha (String senha) {
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";
}
return null;
}
}
Galera, acho que dei uma progredida naquele programa anterior, da um up aii haha…a classe cadastro continua a mesma…
classe compra
import javax.swing.JOptionPane;
public class Compra {
public static void main(String[] args) {
Compra compra = new Compra();
Cadastro cadastro = new Cadastro ();
String mensagem = 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;
}
}
}
private String verificaSenha(String senha) {
if (senha.length() < 6){
return "senha incorreta";
}
if (senha != (String)senha){
return "senha incorreta";
}
return null;
}
public String verificaCpf(String cpf) {
if (cpf == null)
return "preencha o campo";
if (cpf.length() != 11) {
return "cpf inválido";
}
if (cpf.length() == 11){
return "cpf correto";
}
return null;
}
}
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!
while(true){ //o que vc tá testando aqui????
....
}
Tente fazer dessa forma:
Boolean cpfValido = true;
do{
mensagem = compra.verificaCpf(cadastro.getCpf());
if(mensagem.length() == 11){
cpfValido = true;
//exibe mensagem de sucesso
} else{
cpfValido = false
//exibe mensagem de erro
}
while(!cpfValido);
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…