Por que int pos = nomes[i].indexOf("dasdosde); retorna sempre -1?

7 respostas
B

Colegas vejam meu código :

String nomes[] = nome.split(" ");
		String artigos = "dasdosde";
		int pos = nomes[i].indexOf(artigos); // procura a string entre os artigos
		if (((pos==-1)) && (nomes[i].length()>2)){ // se não achou

Seu eu colocar “das dores” em nome e pedir para rodar, ele sempre dá -1 em pos !!!

O que há de errado no meu código ?

abs

Bob

7 Respostas

T

indexOf procura a string “dasdosde”, não “das”, “dos” e “de”.
Como é que o Java sabe que “das”, “dos” e “de” são coisas separadas?
Não se esqueça que o computador não sabe português :stuck_out_tongue:

bruxel

por que o indexof procura por partes de strings dentro de outras string

“dasdores”.indexOf(“das”) == 0 porque a primeira referencia que o indexof encontra esta na posição zero

java.lang.System.out.println(“dasdores”.indexOf(“das”)); == 0 posição zero
java.lang.System.out.println(“dasdoresdas”.indexOf(“das”)); == 0 posição zero
java.lang.System.out.println(“dasdores”.indexOf(“asd”)); == 1 posição um
java.lang.System.out.println(“dasdores”.indexOf(“dasx”)); == -1 posição menos um porque o index não encontra a expressão “dasx” exatamente igual dentro da String “dasdores”

espero que tenha ajudado

B

Amigo thingol pelo que li no manual (se eu não li errado)

int pos = nomes[i].indexOf(artigos)

Pode ser traduzido assim : Procura a ocorrencia de String nomes[i] na substring “artigos” que contêm “dasdosde”

Ou seja se eu digitar das dores ele vai separar o token em das[0] e dores[1]

o 1º token (das) está na String artigos ?!?!?!?!?

Num entendi o que vc me explicou.

:oops:

Bob

rodrigues.danilo

Bob, pensa ao contrário!

T

Ah, certo, então é o contrário que você falou. Não se esqueça que “de”, “das” e “dos” não são artigos e sim a contração da preposição “de” com os artigos “as” ou “os”.

String preposicoes = "das|dos|de"; 
String[] nomes = "Juliana das Dores Desaparecida".split(" ");
int pos = preposicoes .nomes[i];
if (pos >= 0) {
    System.out.println ("Achado uma das preposições no nome");
}
B

Putz, este JAVA me pregando peça !!!

é realmente o contrário !!!

int pos = nomes[i].indexOf(artigos)

equivale a procura artigos em nomes[i] !!!

Que isso ?!?!?!?

Troquei : int pos = artigos.indexOf(nomes[i]) e deu certo !!!

Por isso que falam que JAVA é complicado !!!

nossa amigos brigado mesmo !!! :wink: :wink:

Bob
Ainda apanhando em JAVA

B

kkkk tá certo, não são artigos e sim contração da preposição !!!

“Em matemática sou ruim.
Porém,
em português eu ME AGARANTIO”

kkkkk

Bob
Tomando côro em JAVA

Criado 29 de abril de 2008
Ultima resposta 29 de abr. de 2008
Respostas 7
Participantes 4