O If não funciona com strings?

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

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.

1 curtida

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.

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

amigo utiliza tokens

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

Oi,

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

Tchauzin!

1 curtida

[quote=marciofermino]amigo utiliza tokens

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

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:

1 curtida

Olá

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

[quote=furutani]Olá

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

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

Abraços.

Tambem pode ser resolvido assim:

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

} [/code]

Outro exemplo: