Dúvida na execução de um if

Galera do GUJ,

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

[code]
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]
	     }
	}
}

}[/code]

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.

Ao invés de:

if( identif == senha) 

use

if (( identif.equals( senha)) 

Você está comparando Strings diferentes.

if( identif == senha)

Tenta modificar a linha acima para essa:

if( identif.equals(senha))

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

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) )

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");

use if( identif.equals(senha))

Valew galera

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

Obrigado a todos.