No código abaixo eu tenho a variável texto que recebe o valor de um jTextArea, pega esse valor e armazena em cada posição do vetor1, o vetor2 ja tem as palavras definidas, e eu preciso comparar o vetor1 com vetor2, usando esse for eu consegui, o problema é que ele compara somente a primeira posição.
Alguém pode me ajudar?
Obrigado
Seu código está correto. Tenta ver o conteudo depois do split, pra ver se tá tudo certo mesmo. Além disso, eu costuma usar a classe utilitária Arrays para fazer busca em vetores. Lógico que para seu caso, somete 4 elementos, isso não apresentaria um ganho muito grande, mas para arrays maiores fica interessante. Além disso, para ir concatenando Strings, é sempre bom utilizar um StringBuilder ou StringBuffer…
D
dmarcosm
E ai jovem. Beleza?!
Na verdade acredito que seu código está dando erro em tempo de execução. Os seus FORs estão errados. Eles vão acessar um índice inválido do vetor e dar erro.
Tem duas maneiras de você corrigir seus FORs:
1- for (int i=0;i<vetor1.length;i++)
2- for (int i=0;i<=vetor1.length - 1;i++)
Percebeu o problema na comparação do FOR?!
Espero ter ajudado. Até.>
Andre_Fonseca
paulinhopamec:
No código abaixo eu tenho a variável texto que recebe o valor de um jTextArea, pega esse valor e armazena em cada posição do vetor1, o vetor2 ja tem as palavras definidas, e eu preciso comparar o vetor1 com vetor2, usando esse for eu consegui, o problema é que ele compara somente a primeira posição.
Alguém pode me ajudar?
Obrigado
caso você esteja usando Java 5 poderá fazer algo assim, que considero mais simples
Stringnome="jose";Integeridade=30;Listlista=newArrayList();lista.add(nome);lista.add(idade);for(Objectobject:lista){if(objectinstanceofInteger){System.out.println(object+" é um Integer");}if(objectinstanceofString){System.out.println(object+" é uma String");}}
phpinheiro
Se for java 5, concordo com o André. foreach pra este caso acredito ser melhor que for.
Mas se não for java 5, não utilize vetor2.length dentro da estrutura do for. Isso é muito ruim para performance.
A cada iteração do loop, ele vai ter que calcular o tamanho de novo.
Utilize uma variável local antes do for para receber o tamanho do vetor, assim ele faz o calculo do tamanho somente uma vez. Pense no ganho…
Vampiro
Usar ForEach é melhor…
Mas não esqueça que a propriedade length informa a qtde de elementos do array, mas o último sempre é igual ao número de elementos - 1;
Por exemplo, um array de 5 posições inicia na posição 0 e vai até 4.
Por isso, ao invés de : for(i=0; i<=vetor.length; i++)
Use: for (i=0;i<vetor.length;i++)
P
paulinhopamec
do jeito que o dmarcosm falou quase deu certo, o problema é que quando minha variável tem mais de uma linha ele ja não dá certo. eu tbm não entendi o pq do -1?
O problema do que o André fez é que esse código é parte de um trabalho de um compilador, então a variável texto irá receber o conteúdo do txtCodigo, entao será td String
Obrigado a todos
Andre_Fonseca
paulinhopamec:
do jeito que o dmarcosm falou quase deu certo, o problema é que quando minha variável tem mais de uma linha ele ja não dá certo. eu tbm não entendi o pq do -1?
O problema do que o André fez é que esse código é parte de um trabalho de um compilador, então a variável texto irá receber o conteúdo do txtCodigo, entao será td String
Obrigado a todos
paulinhopamec, tenta assim, adapte o nome das variáveis para o que vc precisa
para usar Arrays precisa fazer import java.util.Arrays
Stringtexto="Eu sou uma String e tambem um int";String[]textos=texto.split(" ");String[]valores={"String","int","char","float"};ListlistTextos=Arrays.asList(textos);ListlistValores=Arrays.asList(valores);for(Objectobj1:listValores){Stringval=(String)obj1;intpos=listTextos.indexOf(val);if(pos!=-1){Stringtxt=(String)listTextos.get(pos);System.out.println("texto["+pos+"]='"+txt+"' é "+val);}}