pessoal! estou fazendo uma pesquisa binaria, e toda vez que tento colocar no campo de busca uma palavra com mais de 4 caracteres me deparo com o seguinte erro:
java.lang.StringIndexOutOfBoundsException: String index out of range: 5
quando coloco ate 4, funciona perfeitamente! no caso desse erro, coloquei com 5!
alguem sabe alguma solução? é problema de logica? obrigado
while (item != null) {
if (item.getPalavra().substring(0,palavra.length()).equals(palavra)) {
saida += item.getPalavra() + “\n”;
}
item = item.getProx();
}
return saida;
lembrando que a variavel palavra, é a palavra que esta sendo procurada
Esse erro acontece porque vc está passando um indice que não existe para o substring, provalvelmente o palavra.length() é maior que o item.getPalavra().length()
é verdade!
mas é meio impossivel
eu estou fazendo a busca em uma lista encadeada simples, gravada na memoria
e tem por exemplo a palavra escola, se eu buscar “esco” ele acha, digitei “escol” ele ja da o erro
O erro ocorre não na ‘Escola’ e sim em uma palavra que não possui mais de 4 caracter, ou seja, pelo menos uma palavra na lista não possui o tamanho maior que o informado em substring(). Você tem que fazer algo parecido com isto:
[quote]
IF $V{usuarioRecibo}.length() > 25 THEN
$V{usuarioRecibo}.substring(0,25)
ELSE
$V{usuarioRecibo}
END IF
Em resumo, testar primeiro se a string é maior que o desejado, se for, aplique a substring, senão, utilize a string.