Manipulação de Dados do Array [RESOLVIDO]

8 respostas
brunosardao

Galera,

Acredito que eu tenha feito a minha pergunta em um tópico no qual já tinha sido solucionado…

Por isso, pergunto agora neste :

Em uma determinada coluna, eu tenho que obter um registro de 8 posições : "novoArq[13].substring(0, 8), porém esta ocorrendo o erro de “java.lang.StringIndexOutOfBoundsException: String index out of range: 8”, isso por que quando fiz o debug, descobri que tem registros que não possui esta quantidade.

o que posso fazer para não pegar registros menores que 8 nesta determinada posição ?

Desculpem a minha insistência, mas é muito importante mesmo…

mais uma vez, obrigado a todos…

8 Respostas

worldsoft

Por que antes de fazer esse comando você não verifica o tamanho do registro

if (novoArq[13].length() > 8) {

}

Existem outra maneiras também, estude um pouco sobre a classe String.
http://download.oracle.com/javase/1,5.0/docs/api/java/lang/String.html

brunosardao

Então,

A questão é que este registro em específico que está ocasionando o erro possui apenas 6 posições e o correto são 8 posições.

Obrigado pela ajuda…

lucas_vieira

Todas as enstrads tem o mesmo tamanho ? Como está o arquivo que vc está lendo (vc está lendo um arquivo ? ) ? Todos os regitros tem realmente 8 posições ?

Se o tamanho dos arquivos possuem variação utilize o metodo lenght() e pegue posição a posição
(não sei se é a melhor solução… não consegui enteder muito bem o pq da diferença do tamnho de um registro para o outr :? )

Continue postando…

Abraço

worldsoft

brunosardao:
Então,

A questão é que este registro em específico que está ocasionando o erro possui apenas 6 posições e o correto são 8 posições.

Obrigado pela ajuda…

brunosardao então como havia falado acima use um método da classe String que se chama lenght(), ficaria +/- assimn:

novoArq[13].substring(0,novoArq[13].lenght()-1 );

Mais caso haja metódos maiores que 8 irão ser pego nessa função esse registros maiores, para isso verifique o tamanho do registro sé é menor que 8 e use o método acima, senão use da forma como estava.

lucas_vieira

worldsoft:
brunosardao:
Então,

A questão é que este registro em específico que está ocasionando o erro possui apenas 6 posições e o correto são 8 posições.

Obrigado pela ajuda…

brunosardao então como havia falado acima use um método da classe String que se chama lenght(), ficaria +/- assimn:

novoArq[13].substring(0,novoArq[13].lenght()-1 );

Mais caso haja metódos maiores que 8 irão ser pego nessa função esse registros maiores, para isso verifique o tamanho do registro sé é menor que 8 e use o método acima, senão use da forma como estava.

Dessa maneira vai funcionar perfeitamente… mesmo que seus registros não possuam o mesmo tamanho.
Erra isso mesmo que vc queria ?

Abraço

brunosardao

lucas_vieira e worldsoft

Muito obrigado pelas dicas, realmente elas funcionaram…No caso utilizei a primeira passada pelo worldsoft já consegui o controle que precisava.

E realmente era o que eu precisava…

Lucas

No caso, realmente eles possuem 8 posições, isso é padrão, é que no caso, alguem executou um processo eventual e gerou o nome dele com 6 posições, ai quando precisei coletar as informações com 8, tava ocorrendo a mensagem de erro. O correto mesmo é 8 posições.

Muito obrigado pela ajuda de vocês…

Abraços…

lucas_vieira

Opa cara que isso… estamos aqui pra ajudar.

Altere o titulo do tópico para resolvido assim otros tbm podem esclarecer suas duvidas diretamente.

Abraço

brunosardao

Valeu Lucas, pode deixar que vou alterar…
abraços,

Criado 17 de maio de 2011
Ultima resposta 17 de mai. de 2011
Respostas 8
Participantes 3