Exigir senha com determinado número de caracteres

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;
}

	}
	System.out.println(senha);
	cadastro.cpf = "123.123.123-00";
	cadastro.endereco = "Avenida Paulista";
	Login cadastro2 = new Login();
	cadastro2.nomeusuario = "Carlos";
	cadastro2.sEnha = 10;
	loop2:
		for(int sEnha = 10; sEnha >=6; sEnha++){
			if(sEnha >= 6) {
				break loop2;
			}
		}
	cadastro2.cpf = "123.123.123-00";
	cadastro2.endereço = "Avenida Paulista";
	System.out.println(sEnha);
}

}

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 ?

GRATO PELA ATENÇÃO DE TODOS!

Oi!

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.

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.

Classe Usuário

[code]public class Usuario {

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 !

Abç

Então seria mais ou menos assim ?

do {
      int senha = 5; //numero de digitos
      // colocar uma senha com 6 digitos ou mais
while ( senha >= 6);

na verdade deve usar o atributo lenght:


while(String.length < 6)

[quote=guilherme.dio]na verdade deve usar o atributo lenght:

[code]

while(String.length < 6)

[/code][/quote]

Ops! Exato.
Como trata-se de uma String não faça o >, use o lenght como citado pelo colega :slight_smile:

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;
	}
}

detalhe, eu esqueci da instancia conta bancaria na classe compra, mas ela nao vai fazer diferença…

grato

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!

uppp galera, da um help AII!!!

O problema é vc fazer isso

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…