Arquivo Properties - não funciona if/else (RESOLVIDO)

Estou com um problema básico, de iniciante, mas que me tomou algumas horas ontem. Não consigo entender o que acontece numa condicional simples.

Tenho o arquivo comandos.properties

comando1=Augusto comando2=Rosana comando3=Carlos

E tenho o arquivo QueryManager.java

[code]import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Properties;

public class QueryManager {

Properties pro;
String chave;

public QueryManager(String arquivo) {  
	pro = new Properties();
	try {		  
		pro.load(new FileInputStream(arquivo));
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}  
}

public String getValor(String valor) {  
	String query = pro.getProperty(valor);  
	return query;  
}  

public String getChave(String chave) {  
	String comando = null;
	
	//System.out.println(pro.keySet());
	Enumeration em = pro.keys();

	while(em.hasMoreElements()){
		String str = (String)em.nextElement();
		System.out.println("KEY DO ARQUIVO: " + str);

		String valor = (pro.get(str)).toString();
		System.out.println("VALOR DA KEY: " + valor);
		
		System.out.println("VALOR DA CHAVE: " + chave);

	
		
		if (chave == valor){
			System.out.println(valor + "-" + chave);
		}
		
		System.out.println("-------------------------");
		
		
	}

	
	return comando;  
}  	

public static void main (String args[]){
	QueryManager manager = new QueryManager("comandos.properties");  
	//System.out.println(manager.getValor("comando2"));
	System.out.println(manager.getChave("Carlos"));
}

}[/code]

O método getValor me retorna o valor da chave, ex: getValor(“comando2”) me retorna Rosana.

O problema está no método getChave, que deveria fazer o caminho inverso: Fornecer o Valor e ele me retornar a chave.

Coloquei uma condicional simples que não funciona de jeito nenhum:

if (chave == valor){ System.out.println(valor + "-" + chave); }

O que pode estar acontecendo nesse ponto?

Não sei se entendi bem, mas você tá comparando duas strings com o operador ==? Não deveria utilizar equals?

Faz assim:

chave.equals(valor)

ou

chave.compareTo(valor) == 0

Desculpa sic, tenho algumas dúvidas de iniciante.

Já tinha me deparado com o equals, mas não sabia quando optar por ele ou por o ==.

Achei um bom artigo no endereço
http://javafree.uol.com.br/artigo/3932/Comparar-variaveis-==-ou-equals.html
e estou vendo como utilizar um ou outro.

Com a instrução o problema foi resolvido

if (chave.equals(valor)){ System.out.println("AGORA DEU CERTO: " + valor + "=" + chave); }

Obrigado!

Olá felipedamiani, obrigado pela resposta.

Estava escrevendo a resposta ao sic, vi a sua só depois.
Mas é exatamente como você mostrou, funcionou direitinho.

Agora vou procurar entender quando utilizar equals() ou ==.

Obrigado

Fala cara,

sem problemas quanto as dúvidas de iniciante.

O que eu posso te falar é o seguinte, tem btt coisa sobre como utilizar o equals e ==, ainda mais no Java 5 onde o autoboxing pode influenciar no uso do == com objetos Wrapper. Sugiro que você busque em algum livro mais informações sobre esse assunto!

Caso você não possua nenhum livro, existem algumas apostilas boas no site da Caelum, aqui você pode fazer o download, gratuitamente, das mesmas.

[]`s