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:
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
kaique
Novembro 2, 2007, 12:45pm
#3
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
lina
Novembro 2, 2007, 1:58pm
#6
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
1 curtida
Olá
Ao invés de split() eu usaria a classe Pattern .
Mas os tres podem resolver o problema.
Avante
Novembro 2, 2007, 6:12pm
#9
[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]