StringIndexOutOfBoundsException

6 respostas
oitathi
Eu estou tendo dificuldade em ler um texto que está em binário, variando 0 à 255.  Eu quero que ele pare de ler quando o for encontrada a sequencia   (26 e 0 na tabela asc). porém, quando eu faço isso dah o seguinte erro:

Exception in thread main java.lang.StringIndexOutOfBoundsException: String index out of range: 22

at java.lang.String.charAt(String.java:686)

at nauticos.ReadingMethods.readHeader(ReadingMethods.java:63)

at nauticos.ReadingMethods.readHeaderLine(ReadingMethods.java:59)

at nauticos.Main.main(Main.java:45)

Java Result: 1
public void readHeaderLine (RandomAccessFile fis) throws IOException {
        String thisString="";
        char thisChar = (char) fis.read();
        while ((thisChar != 13) && (thisChar != 0)) {
            if (thisChar!=10){
                thisString=thisString+thisChar;
            }
            thisChar = (char) fis.read();
        }
        System.out.println(thisString);
        readHeader(fis, thisString);
    }

   public void readHeader (RandomAccessFile fis, String s) throws IOException{
       while (s.charAt(s.length())!=26) // dah erro nessa linha
           readHeaderLine(fis);
          
       }
      
   }

Alguém pode me ajudar???

6 Respostas

fbeli

Já tentou usar

s.charAt(s.length()-1)!=26

ou ainda

null != s.charAt(s.length()-1)

oitathi

Já, nem deu certo…
e eu não entendi a sua segunda possibilidade
:cry:

fbeli

indexoutofbound é pq o item não existe a posição naquela string, tipo:

string = “carro”

length() = 5

c = 0
a = 1
r = 2
r = 3
o = 4

ou seja, se buscar a posição 5 ela não existe

emmanuelrock

Faça assim meu querido

public void readHeader (RandomAccessFile fis, String s) throws IOException{   
       while (s.charAt(s.length()-1)!=26) //esqueceu que a indexação começa do 0
           readHeaderLine(fis);   
             
       }   
         
   }

Abraço!

oitathi

Gente, eu já coloquei o -1 e mesmo assim tah dando erro!!!

Marky.Vasconcelos

Faz um System.out.println(str.length()) e ve o tamanho da sua string.

Criado 4 de fevereiro de 2011
Ultima resposta 4 de fev. de 2011
Respostas 6
Participantes 4