Dúvidas para chamar métodos

13 respostas
H

Boa tarde,

Estou fazendo um programa, tipo um site de relacionamento, mas estou tendo problemas na conversão.

Vou colocar em pedaço do eu já fiz.

//Uma classe para cadastro

package Site_relacionamento;

public class Cadastro {


	private String endereço;
	private long telefone;
		
	
	public void setEndereço(String novoendereço){
		return;
	}
	
	public void setTelefone(long novotelefone){
		return;
	}
}

//Agora o metodo principal

package Site_relacionamento;
import javax.swing.JOptionPane;
public class Principal {
	
	public static void main(String args[]){
		
		
		Cadastro cas;
		
		cas = new Cadastro();
		
		
		cas.setEndereço(JOptionPane.showInputDialog ("Digite seu endereço:")); 
		cas.setTelefone(JOptionPane.showInputDialog ("Digite seu telefone:"));  //Aqui esta o problema, como converter de long para String?
		
				
	}

}

Desde já agradeço.

13 Respostas

robsonsm

Pelo que entendi vc precisa passar um long (primitivo), se o proplema é so conversao vc poderia fazer isso:

cas.setTelefone(Long.parseLong(JOptionPane.showInputDialog ("Digite seu telefone:")));

mas cuidado, pois pode dar excessao se o usuario digitar uma letra por exemplo.

tinorberto

Olá, consulte a documentação do http://download.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html

JOptionPane.showInputDialog retorma uma string, no seu caso acho melhor vc passar o telefone para string, pois ele geralmente tem () ou -

Flw…

H

Muito obrigado Robisonsm, é exatamente isso.

Vou dar uma olhada no você sugeriu tinorberto, obrigado.

G

Olá, você poderia fazer algo assim:

String tel = JOptionPane.showInputDialog ("Digite seu telefone:"); if (tel != null) { //testa se é uma entrada válida try { cas.setTelefone(Long.parseLong(tel)); //converte String em long } catch (NumberFormatException ex) { //se a entrada informada não puder ser convertida para um long System.out.println("Não é um número válido"); } }

H

geraldo.vec:
Olá, você poderia fazer algo assim:

String tel = JOptionPane.showInputDialog ("Digite seu telefone:"); if (tel != null) { //testa se é uma entrada válida try { cas.setTelefone(Long.parseLong(tel)); //converte String em long } catch (NumberFormatException ex) { //se a entrada informada não puder ser convertida para um long System.out.println("Não é um número válido"); } }

Ainda não aprendi try e catch.

H

Bom dia,

Estou tendo mais algumas dúvidas, coloquei tudo que estou fazendo e tentei explicar com comentários.

Agredeço mais uma vez a ajuda de vocês.

package Site_relacionamento;
public class Cadastro {

	private String nome;
	private String endereço;
	private long telefone;
	private String login;
	private String senha;
	private String email;
	private long CPF;
	private String usuario;
	private boolean alterarsenha;
	
	
	public void Nome(String novonome){
		System.out.println("Nome:");
		return;
	}
	
	public void setEndereço(String novoendereço){
		return;
	}
	
	public void setTelefone(long novotelefone){
		return;
	}
	
	public void setLogin(String novologin){
		return;
	}
	
	public void senha(String senha){
		System.out.println("Senha:");
		return;
	}
	public void setEmail(String novoemail){
		return;
	}
	
	public void CPF(long novoCPF){
		System.out.println("Senha:");
		return;
	}
	public void setUsuario(String nomeInicial, long CPFInicial){
		nome = nomeInicial;
		CPF = CPFInicial; 
	}
	public void setalterarSenha(String senhaAntiga, String senhaNova){
		if(senhaAntiga != senhaNova){
			senhaAntiga = senhaNova;
		}
	}

	//getters
	public String getEndereço(){
		return endereço;
	}
	public long getTelefone(){
		return telefone;
	}
	public String getLogin(){
		return login;
	}
	public String getEmail(){
		return email;
	}
	public String getUsuario(){
		return usuario;
	}
	public boolean getAlterarsenha(){
		return alterarsenha;
	}
	
}


//Método Principal

package Site_relacionamento;
import javax.swing.JOptionPane;
public class Principal {
	
	public static void main(String args[]){
		
		long telefone;
		char cadastro, alterar;
		
		cadastro='s';

		Cadastro cas;
		
		cas = new Cadastro();
			
		
		cadastro = JOptionPane.showInputDialog("Possui cadastro?").charAt(0);
		
		while(cadastro == 'n'){
			
		cas.Nome(JOptionPane.showInputDialog ("Digite seu nome:"));
		cas.setEndereço(JOptionPane.showInputDialog ("Digite seu endereço:"));
		cas.setTelefone(Long.parseLong(JOptionPane.showInputDialog ("Digite seu telefone:")));
		cas.setLogin(JOptionPane.showInputDialog ("Digite um login:"));
		cas.senha(JOptionPane.showInputDialog ("Digite uma senha com 4 letras:"));
		cas.setEmail(JOptionPane.showInputDialog ("Digite seu email:"));
		cas.CPF(Long.parseLong(JOptionPane.showInputDialog ("Digite seu CPF:")));
		}
		
                             //Aqui esta o problema, não consigo chamar o método Usuário e não sei se posso colocar duas mensagens na mesma caixa de texto.
		cas.setUsuario (JOptionPane.showInputDialog("Digite seu Login (Nome)" + "senha (CPF)"));//O usuário digita a senha e o CPF para login e, em baixo,
		JOptionPane.showInputDialog("Deseja alterar senha?").charAt(0);                                     //Pergunta se quer trocar a senha.
                                                                                                               
		
		switch (alterar){
		
		case 's':
		cas.setalterarsenha(JOptionPane.showInputDialog("Digite senha nova:")); //Tem erro no setalterarSenha
		
		}
		
		System.out.println("Endereço" + cas.getEndereço() + "Telefone" + cas.getTelefone() +
				"Login" + cas.getLogin() + "Email" + cas.getEmail() );
	}
}
H

UP–

luistiagos

pq vc utiliza o telefone como um long? geralmente usa-se strings… ainda mais que o usuario geralemente vai usar uma mascara estilo ([telefone removido]… se quer mesmo usar long… antes de converter sua String para long vc deve retirar os caracteres especiais como exemplo () e -, retirar os espaços e validar para ver se o digitado é realmente um numero… para depois converte-lo… senão recebera um belo NumberFormatException

H

Então, foi passado um UML pelo professor, no qual, o telefone tem que ser long, vou fazer o que você falou, mas e quanto ao método que esta dando erro, você sabe por que?

H

Alguém pode me ajudar?

Não consigo continuar, pois dá erro.

Lucas182

Você não pode comparar String por == e !=. (a não ser que você queira perguntar a área da memória em que as 2 apontam).
tem que usar equals(String dois)

Tipo, no caso você quer

if ( ! senhaantiga.equals(senhanova) ) {}
H
Lucas182:
Você não pode comparar String por == e !=. (a não ser que você queira perguntar a área da memória em que as 2 apontam). tem que usar equals(String dois) Tipo, no caso você quer
if ( ! senhaantiga.equals(senhanova) ) {}

Já fiz essa correção.

Quanto a dúvida de chamar o método eu estava chamando apenas um, sendo que passei dois parâmetros. Eu fiz separado:

//Classe Cadastro

public void setUsuario(String nomeInicial){
nome = nomeInicial;
}

public void setUsuario(long CPFInicial){
CPF = CPFInical;
}

//Classe principal

Cadastro cas;
...

cas.setUsuario(JOptionPane.showInputDialog("Digite seu login:  "));
cas.setUsuario(Long.parseLong(JOptionPane.showInputDialog("Digite sua senha:")));

Posso fazer dessa maneira?

H

up-------

Criado 19 de setembro de 2010
Ultima resposta 25 de set. de 2010
Respostas 13
Participantes 6