java.lang.StringIndexOutOfBoundsException:

Boa galera aqui por que quando executo este codigo:

[code]import java.io.*;
public class ReadFile {
public static void main (String[] args) {
File file = new File(“c:\pabx03.txt”);

try{
	
	BufferedReader in = new BufferedReader(new FileReader(file));
	String s;
	
	s = in.readLine();
	while (s !=null){
		//System.out.println(s);
		
		System.out.println(s.substring(0,8));
		
		s = in.readLine();
	}
	in.close();
}catch (FileNotFoundException e1){
	System.err.println("Arquivo não encontrado:"  + file);
	
}catch(IOException e2){
	e2.printStackTrace();
}

}
}
[/code]

recebo este erro:
Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 8
at java.lang.String.substring(Unknown Source)
at ReadFile.main(ReadFile.java:15)

  • quando mudo a saida para System.out.println(s);
    não recebo nenhum erro …

Boa galera

Abraços

E aew?? Blz?
A exce tah dizendo que o problema é no metodo ‘substring’. verifica se a string ‘s’ tem 9 caracteres mesmo… lembre-se que 0 a 8 são 9 caracteres… blz??? tenta colocar de 0 a 7… acho que vai dar certo! Blz???

A sua string s não tem tamanho maior ou igual a 8, por isso dá esse erro.
Tente com um tamanho menor por exemplo:

System.out.println(s.substring(0,5));  

tentei de (0,1 a 0,10 ) todos deram o mesmo erro

Cara… quando vc imprime só com System.out.println(s); o que aparece!?

Muito estranho vc afirmar que do intervalo 0,1 continua dando erro… O que justifica isso seria uma String de um só tamanho.
Exemplo: A, a, B, b etc…

Sacou!?

todo o meu arquivo txt:

[code]04/11/08 12:13PM 1 E1245 T10114 27762688 00:00’45

04/11/08 12:13PM 1 E1148 T10107 22908401 00:00’19

04/11/08 12:13PM 1 E1102 T10102 25905483 00:00’57

04/11/08 12:13PM 1 E1077 T20903 0251633353298 00:00’23

04/11/08 12:13PM 1 E1019 T10503 2300 0’00 00:01’50 TR

04/11/08 12:13PM 1 E1040 T10906 34641353 00:01’17

04/11/08 12:13PM 1 E1242 T10101 37117174 00:00’20

04/11/08 12:13PM 1 E1147 T10127 32742314 00:04’34

04/11/08 12:13PM 1 E1234 T10903 37698093 00:02’33

04/11/08 12:13PM 1 E1256 T10113 27714551 00:00’49

04/11/08 12:13PM 1 E1204 T10120 39053518 00:00’00

04/11/08 12:13PM 1 E1038 T10927 3795 0’01 00:00’46

04/11/08 12:13PM 1 E1266 T10106 37675096 00:00’07

04/11/08 12:13PM 1 E1034 T10128 26687300 00:00’40

04/11/08 12:13PM 1 E1331 T30109 0259132746247 00:00’20

04/11/08 12:13PM 1 E1001 T10919 3767 RC

04/11/08 12:13PM 1 E1244 T30111 0258134421487 00:01’00

04/11/08 12:13PM 1 E1243 T10105 27788099 00:00’04

04/11/08 12:13PM 1 E1144 T20909 0251121310005 00:00’21

04/11/08 12:13PM 1 E1022 T10928 3787 0’00 00:00’58

04/11/08 12:13PM 1 E1107 T10503 2300 0’00 00:00’20 TR


Date Time T Ext CO Dial Number Ring Duration Acct code CC


04/11/08 12:13PM 1 E1324 T31204 86322414 00:02’20

04/11/08 12:13PM 1 E1030 T10124 27998523 00:01’35

04/11/08 12:13PM 1 E1078 T11203 0319691296940 00:00’16

04/11/08 12:13PM 1 E1148 T11207 98135103 00:00’07

04/11/08 12:13PM 1 F1406 T10924 3790 RC

04/11/08 12:13PM 1 E1001 T10919 3767 0’11 AN

04/11/08 12:13PM 1 E1099 T10924 3790 0’01 AN

04/11/08 12:13PM 1 E1249 T10122 27144620 00:00’34

04/11/08 12:13PM 1 E1028 T10123 25120800 00:00’10

04/11/08 12:14PM 1 E1165 T10114 37658071 00:00’27

04/11/08 12:14PM 1 E1128 T10902 027222 00:00’03

04/11/08 12:14PM 1 E1019 T31201 0312281436415 00:00’05

04/11/08 12:14PM 1 F1487 T30108 3535 RC

04/11/08 12:14PM 1 E1001 T10919 3767 0’11 00:00’10

04/11/08 12:14PM 1 E1072 T11208 0313491520201 00:00’08

04/11/08 12:14PM 1 E1257 T30108 3535 0’03 AN

04/11/08 12:14PM 1 E1260 T10104 24437374 00:00’46

04/11/08 12:14PM 1 E1256 T31202 87385530 00:00’09

04/11/08 12:14PM 1 E1243 T10120 26924938 00:00’04

04/11/08 12:13PM 1 E1266 T10105 30457566 00:00’00

04/11/08 12:14PM 1 E1127 T10118 34269321 00:01’12


Date Time T Ext CO Dial Number Ring Duration Acct code CC


04/11/08 12:14PM 1 E1160 T31204 98396723 00:00’11

04/11/08 12:14PM 1 E1070 T20912 0254834417777 00:00’27

04/11/08 12:14PM 1 E1331 T30109 0258332550597 00:00’02

04/11/08 12:14PM 1 E1062 T10115 0314130171031 00:00’17

04/11/08 12:14PM 1 E1144 T11207 0311182847401 00:00’06

04/11/08 12:14PM 1 E1264 T11201 92015889 00:01’09

04/11/08 12:14PM 1 E1242 T10127 27853274 00:00’24

04/11/08 12:14PM 1 E1099 T10924 3790 0’01 00:00’23

04/11/08 12:14PM 1 E1078 T30110 0259337352267 00:00’02

04/11/08 12:14PM 1 E1025 T11203 97290295 00:00’11

04/11/08 12:14PM 1 E1245 T10102 22652335 00:00’31

04/11/08 12:14PM 1 E1332 T10117 34644030 00:00’45

04/11/08 12:14PM 1 E1028 T11208 88831116 00:00’04

04/11/08 12:14PM 1 E1101 T11204 96251214 00:01’01

04/11/08 12:14PM 1 E1247 T10110 31025021 00:00’45

04/11/08 12:14PM 1 E1019 T31204 0312281436415 00:00’08

04/11/08 12:14PM 1 E1131 T10501 2300 RC

04/11/08 12:14PM 1 E1131 T10501 2300 0’01 AN

04/11/08 12:14PM 1 E1072 T11201 03134881227 00:00’02

04/11/08 12:14PM 1 E1314 T20901 02511990626671 00:00’16

04/11/08 12:14PM 1 E1279 T10901 24366243 00:00’01


Date Time T Ext CO Dial Number [/code]

É algum erro no seu arquivo. Não que seja erro, mas por exemplo, se existe uma cadeia com com menos de 8 caracteres, não pega, entende?

Saca só a entrada que eu fiz aqui:

O código

import java.io.*;
public class ReadFile {
public static void main (String[] args) {
	File file = new File("C:\\teste.txt");
	
	try{
		
		BufferedReader in = new BufferedReader(new FileReader(file));
		String s;
		
		s = in.readLine();
		while (s !=null){
			//System.out.println(s);
			
			System.out.println(s.substring(0, 2));
			
			s = in.readLine();
		}
		in.close();
	}catch (FileNotFoundException e1){
		System.err.println("Arquivo não encontrado:"  + file);
		
	}catch(IOException e2){
		e2.printStackTrace();
	}
}
}

A saída:

Eu aposto que é alguma cadeia que seja menor que 8 caracteres e que você tá pegando. Se eu fizer, no lugar dele

System.out.println(s.substring(0, 2));
System.out.println(s.substring(0, 5));

Tenho a exception porque as strings não são maiores que 4. Se você tem strings de tamanhos variados, verifique o tamanho e mande um novo valor para o segundo parâmetro da substring.

editado
Você tem essas quebras de linha no seu txt? Se tiver, tire.
Com espaços funciona tranquilo.

então como ja descrevi, tentei com todos os valores minimo e maximo … e todos tenho o mesmo erro

Mas é claro… Nosso amigo dedejava solucionou…

O seu continua dando erro pois vc em linhas em brancos… experimente tirá-las.

Ou entao, se não quiser modificar o seu arquivo, coloca no código alguma verificação, pra não pegar substring quando a linha estiver em branco!

Seria uma boa alternativa…

[code]import java.io.*;
public class ReadFile {
public static void main (String[] args) {
File file = new File(“c:\pabx03.txt”);

 try{  
      
    BufferedReader in = new BufferedReader(new FileReader(file));  
    String s;  
      
    s = in.readLine();  
    while (s !=null){  
        //System.out.println(s);

        if(!s.equals("")){              
            System.out.println(s.substring(0, 8));  
        }

        s = in.readLine();  
    }  
    in.close();  
}catch (FileNotFoundException e1){  
    System.err.println("Arquivo não encontrado:"  + file);  
      
}catch(IOException e2){  
    e2.printStackTrace();  

}
}
} [/code]

Sacou??? Flw…

Ao invés de
System.out.println(s.substring(0, 8));
coloque
System.out.println(s.length() > 8 ? s.substring(0, 8) : s);

Pronto!

Boa amigo victorwss
funcionou obrigado

abraços