O If não funciona com strings?

10 respostas
A

Olá pessoal

eu fiz um codigo onde uma maquina envia para outra uma unica string com 3 valores q são separados pelo caracter “:”…o pc q recebe essa informação tem q quebrar esses 3 valores em 3 variaveis diferentes…estas variaveis são:

  • status
  • ip_mestre
  • porta2

pois bem eu quero testar no if se “status” é igual ah “Eleicao_Iniciada” + ele não entra na condição…oq eu faço???

import java.lang.*;
public class Testando
{
	public static void main(String[] args)
    {	    		    	
    	String entrada = "Eleicao_Iniciada:201.74.80.205:8000";	
    	String status = "";
    	String ip_mestre = "";
    	String porta2 = "";
    	int j = 0;
    	
		for (int i = 0; i < (entrada.length()); i++)
	    {		    				    	
	    	if(entrada.charAt(i) != ':')
	    	{
	    		if(j == 0)
	    		{	    		
	    			status = status + entrada.charAt(i);		    			
	    		}
	    		else if(j == 1)
	    		{
	    			ip_mestre = ip_mestre + entrada.charAt(i);		    		   			
	    		}
	    		else if(j == 2)
	    		{
	    			porta2 = porta2 + entrada.charAt(i);		    			
	    		}
	    	 }
	    	 else if (entrada.charAt(i) == ':')
	    	 {
	    	 	j++;
	    	 }		    
	    }
		j = 3;
		    
	    System.out.println("O status eh: " + status); 			//Imprime...O Status eh: Eleicao_Iniciada
	    System.out.println("O ip_mestre eh: " + ip_mestre);		//Imprime...O ip_mestre eh: 201.74.59.201
	    System.out.println("A porta2 eh: " + porta2);			//Imprime...A porta2 eh: 8000	
	    		    			    
	   	//alguem requisitou eleição 
    	if(status == "Eleicao_Iniciada")
    	{	    		
    		System.out.println("XXXXXXXXXXXXXXXXXXXXX");		//Não Imprime Nada
    			    		
    	}
    }
}

10 Respostas

R

leia: http://www.guj.com.br/java.tutorial.artigo.103.1.guj

e verá que deverá utilizar String.equals() para comparar da forma que quer…pois como a String se trata de uma Classe e não de um tipo primitivo vc não tá comparando o conteudo, mas sim a referencia.

K

Cara, uma dica…
Se você quer quebrar uma String em outras partes, dependendo de um elemento (token), você poderia usar o método split(String s) da classe String. Dá uma pesquisada na API, dessa forma o seu código se torna bem mais simples…

[]'s.

A

obrigado pelas dicas pessoal foram de grande ajuda…ja resolvi meu problema obrigado

M

amigo utiliza tokens

acho que vai ajudar
http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html

L

Oi,

Comparações com Strings em formas como IF, são feitas com .equals e neste caso será o equalsIgnoreCase

Tchauzin!

L

marciofermino:
amigo utiliza tokens

acho que vai ajudar
http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html

String tokenizer é reconhecidamente bugado
use o split
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String)
esse erro de comparação é típico de quem mexe muito com php
não esqueça nunca do .equals :wink:

F

Olá

Ao invés de split() eu usaria a classe Pattern.
Mas os tres podem resolver o problema.

A

furutani:
Olá

Ao invés de split() eu usaria a classe Pattern.
Mas os tres podem resolver o problema.

Mas o String.split() já encapsula o uso do Pattern

Abraços.

C

Tambem pode ser resolvido assim:

package dates;

public class Testando  {  
     
public static void main(String[] args)  
    {                         
        String entrada = "Eleicao_Iniciada:201.74.80.205:8000";   
        String status = "";  
        String ip_mestre = "";  
        String porta2 = "";  
        int j = 0;  
          
        for (int i = 0; i < (entrada.length()); i++)  
        {                                     
            if(entrada.charAt(i) != ':')  
            {  
                if(j == 0)  
                {                 
                    status = status + entrada.charAt(i);                          
                }  
                else if(j == 1)  
                {  
                    ip_mestre = ip_mestre + entrada.charAt(i);                                
                }  
                else if(j == 2)  
                {  
                    porta2 = porta2 + entrada.charAt(i);                          
                }  
             }  
             else if (entrada.charAt(i) == ':')  
             {  
                j++;  
             }            
        }  
        j = 3;  
             
        System.out.println("O status eh: " + status);           //Imprime...O Status eh: Eleicao_Iniciada  
        System.out.println("O ip_mestre eh: " + ip_mestre);     //Imprime...O ip_mestre eh: 201.74.59.201  
        System.out.println("A porta2 eh: " + porta2);           //Imprime...A porta2 eh: 8000     
                                     
        //alguem requisitou eleição
        String test = status;
        if(status == test)  
        {                 
            System.out.println("XXXXXXXXXXXXXXXXXXXXX");        //Não Imprime Nada  
                              
        }  
    }  
}
J

Outro exemplo:


Criado 2 de novembro de 2007
Ultima resposta 3 de nov. de 2007
Respostas 10
Participantes 10