Dúvida na execução de um if

6 respostas
M

Galera do GUJ,

Estou com uma dúvida simples sobre uma rotina que é:

import javax.swing.JOptionPane;

public class PodeOuNaoPode {

	public static void main(String[] args){
		
		String idade;
		int idade1;
		String identif = " ";
		String senha = "s";
		String negacao = "n";
		
		idade = JOptionPane.showInputDialog("Informe sua idade");
		idade1 = Integer.parseInt(idade);
		
		if (idade1 >= 18){
			
			JOptionPane.showMessageDialog(null,"Pode Entrar");
		
		[b]}else if (idade1 < 18){
			
			identif = JOptionPane.showInputDialog("Você é amigo do dono? / s ou n ");
		
			 if( identif == senha) {   
			
				JOptionPane.showMessageDialog(null, " Pode Entrar");
			
		     }else{								
	
				JOptionPane.showMessageDialog(null, "Não Pode Entrar");[/b]
		     }
		}
	}
}

Este programinha quando o usuário digita uma idade menor que 17 (a parte em negrito) ele sempre mostra a segunda opção do if, ou seja "não pode entrar". Alguém pode tirar minha dúvida?

Obrigado.

6 Respostas

Roger75

Ao invés de:

if( identif == senha)

use

if (( identif.equals( senha))

Você está comparando Strings diferentes.

J
if( identif == senha)

Tenta modificar a linha acima para essa:

if( identif.equals(senha))

Espero ter ajudado!!
Flw aew e t+!!

fabim

1 - Retire o seu segundo teste lógico, ele nao serve pra nada… se ele comparou la em cima e viu q nao é >= a 18, entao com certeza ele é < que 18…

2 - substitua if( identif == senha) por if( identif.equalsIgnoreCase(senha) )

ramilani12

Não entendi muito bem sua dúvida se ele informar a idade menor que 18 entrará no segundo if

Só tome cuiado ao testar a senha
String não é um tipo primitivo e sim objeto ao testar com operador == vc esta comparando se a referencia da String a é == String b
o que vc quer testar se as String´s são equivalentes ou seja seu conteudo é o mesmo utilize o metodo equals():

String a = "A";
String b = "A";

if (a.equals(b))
System.out.println("As Strings são equivalentes");

if (a == b)
System.out.println("O objeto B nao aponta para mesma referencia de A");

b = a;

if (a == b)
System.out.println("Agora  objeto B aponta para mesma referencia de A");
paulodompieri

use if( identif.equals(senha))

M

Valew galera

queria realmente comparar o conteúdo das variáveis e este método equals() resolveu o problema.

Obrigado a todos.

Criado 20 de março de 2007
Ultima resposta 20 de mar. de 2007
Respostas 6
Participantes 6