Problema com o código

3 respostas
L
pessoal, está dando uma falha no meu programa, mesmo eu declarando um boolean como falso o programa roda como se ele fosse verdadeiro, deem uma olhada no código e me ajudem a achar o erro, por favor. todos os booleans nesta parte do código eu os decalro no inicio como falsos, e o cliente envia o seguinte texto "login£:root,root", o programa está recebendo certinho o texto. como podem ver, de acordo com o código ele deveria autorizar a execução do resto do código e reler a entrada de dados, mas o problema eh que independete do que eu boto ele pasa direto pra parte de roda o comando.
S = SS.accept();
                DIS = new DataInputStream(S.getInputStream());
                DOS = new DataOutputStream(S.getOutputStream());
                System.out.println("esperando");
                
                s_cmd_recebido=DIS.readUTF();
                if (s_cmd_recebido.indexOf("login£:") == 0){
                    b_login = true;
                   
                    System.out.println("login");
                }else{
                   s_cmd_recebido2=s_cmd_recebido;
                   b_login=false;
                   System.out.println("comando");
                }
                if (b_login = true){
                    int i1,i2,i3,i4;
                    i1 = s_cmd_recebido.indexOf(":")+ 1;
                    i2 = s_cmd_recebido.indexOf(",") - 1;
                    i3 = i2 + 2;
                    
                    if (s_cmd_recebido.substring(i1,i2) == s_user && s_cmd_recebido.substring(i3) == s_passwd){
                        
                        
                        DOS.writeUTF("Liberado");
                        System.out.println("Liberou");
                        s_cmd_recebido2 = DIS.readUTF();
                        b_liberado=true;
                    }
                    else{
                        DOS.writeUTF("Usuário ou senha inválidos");
                        
                    }
                }
                if(b_liberado = true){
                
                jta_saida.setText(s_cmd_recebido2);
                exec();
                while (b_continua = false){
                    
                }
                System.out.println("recebeu e escreveu na tela");
                DOS.writeUTF(s_resp_proc);
                System.out.println("enviou");

por favor , alguem pode me dar uma mão?

3 Respostas

Marky.Vasconcelos

fazendo

if(b_liberado = true)

Voce esta assignando a b_liberado o valor true, então o valor para o if vai ser sempre true.

para comprar use ==

if(b_liberado == true)
furutani

Olá
A forma certa de comparar é:

b_login == true

É com dois == e não com um =

L

meu caramba, não sei se choro ou se rio.

Que rídiculo. Olha que afiquei pelo menos ums 2 horas tentando ve o erro :?

Vlw por terem respondido em vez de tirarem uma coma minha cara XD

Criado 15 de novembro de 2008
Ultima resposta 15 de nov. de 2008
Respostas 3
Participantes 3