Porque não está entrando no if

4 respostas
R

Boa noite
Gostaria de saber porque este comando não está funcionando sendo que a condição é vedadeira?
Codigo do botão:

String foto, album, cdrow, dvd;
    foto=album=cdrow=dvd="Não";
        //este if está funcionando corretamente, so os ultimos 4 ifs que não estão.
        if (jrbCodigoServicos.getSelectedObjects()!=null){
            int codigo = Integer.parseInt(jtBuscaServicos.getText());
            try{
                Connection conn = Conexao.conecta();
                Statement stmt = conn.createStatement();
                ResultSet rs= stmt.executeQuery("SELECT Cod_Cliente, Cod_Servico, Evento, "+
			"Rua, Bairro, Cidade, DataEvento, Qtd_Fotos, Prazo_Entrega, "+
			"Valor_Total, Fotos, Album, CD_ROW, DVD FROM TB_Evento, "+
			"TB_Servico WHERE TB_Evento.Cod_Evento=TB_Servico.Cod_Evento "+
			"AND Cod_Cliente = "+codigo);
		//este if tbm está funcionando corretamente
                if(rs.next()){
                    jlCodigoClienteServico.setText(rs.getString("Cod_Cliente"));
                    jtTipoEventoServicos.setText(rs.getString("Evento"));
                    jtEnderecolServicos.setText(rs.getString("Rua"));
                    jtBairroServicos.setText(rs.getString("Bairro"));
                    jtCidadeServicos.setText(rs.getString("Cidade"));
                    jtDataEventoServicos.setText(rs.getString("DataEvento"));
                    jtQuantidadeServicos.setText(rs.getString("Qtd_Fotos"));
                    jtPrazoEntregaServicos.setText(rs.getString("Prazo_Entrega"));
                    jlValorCobrarServicos.setText(rs.getString("Valor_Total"));
                    foto = rs.getString("Fotos");
                    album = rs.getString("Album");
                    cdrow = rs.getString("CD_ROW");
                    dvd = rs.getString("DVD");
                    jlServicos.setText(rs.getString("Cod_Servico"));

                    //So para saber o que cada variavel esta recebendo.
                    System.out.println("foto: "+foto);
                    System.out.println("album: "+album);
                    System.out.println("cdrow: "+cdrow);
                    System.out.println("dvd: "+dvd);
                }
                stmt.close();
                conn.close();
            }catch(Exception e){
                System.out.println("Erro: " +e.getMessage());
            }
        }
    //estes ifs não estão funcionando
    if(foto=="Sim")
        jcbFotosServicos.setSelected(true);
    if(album=="Sim")
        jcbAlbumServicos.setSelected(true);
    if(cdrow=="Sim")
        jcbCdrowServicos.setSelected(true);
    if(dvd=="Sim")
        jcbDvdServicos.setSelected(true);
Estou recebendo os valores das variaveis de um banco de dados feito no access. O tipo do campo é Varchar(3), e estou recebendo como String, mas independete do valor que as variaveis recebam, mesmo que sejam Sim elas não entram no if so entram se eu colocar != de Não, mas ai entra ate mesmo se for Não. Porque o if está lendo a string Sim como se fosse diferente da String Sim? Eu quero que o programa veja se a variavel é sim ou não se for sim, é para marcar o checkbox se for não é para deixa-lo desmarcado.

obs: Já tentei converter em string usando String.valueOf(variavel) e mesmo assim não deu.

Quero saber como fazer que as condições dos meus ifs funcionem.

Valew.

4 Respostas

_Renatu

substitua:

if(foto==“Sim”)

por

if (foto.equals(“Sim”))

acopiara

Em java String é uma classe. E o tipo nao é primitivo. De modo para comparar você tem q usar o metodo equals da classe String.
Tente ver o metodo equlas() e o equalsIgnoreCase();

acopiara

Mas tem a historia do objeto guardado no pool, de forma q esse codigo simula o dele. E funciona pois na hora q se cria gg na condicao e vai apontar para objeto ja criado:

public static void main(String arg[]){
 	
 		String g = t();
 		if(g=="gg"){
 			System.out.println("entra no if");
 		}
 	}
public static String t(){
	return "gg";
}
lenando

Até o momento do if, nenhuma string “Sim” tinha sido criada, e por isso não poderia estar no pool, retornar mesmo FALSE no momento do if.

Acredito ser recomendável sempre comparar Strings com o método equals, para evitar esses pequenos transtornos.

Criado 3 de fevereiro de 2007
Ultima resposta 3 de fev. de 2007
Respostas 4
Participantes 4