Erro ArrayIndexOutOfBoundsException: 1

Eu preciso ler um arquivo .txt e separar em uma string com o uso do Split e salvar em uma array list, porém o erro sempre ocorre, segue código

    public static void recuperarDeArquivo(String nomeArq, ArrayList<Ticket> tck){
    		try{
    			BufferedReader arq = new BufferedReader(new FileReader(nomeArq));
    			while(arq.ready()){
    				String linha = arq.readLine();
    				if (linha.contains("Ticket")) {
    					String aux[] = linha.split(" | ");
    						String SCodg= aux[1].split(": ")[1];
    						String Nome= aux[2].split(": ")[1];
    						String nasc = aux[3].split(": ")[1];
    						String Svalor = aux[4].split(": ")[1];
    						String timecasa =aux[5].split(": ")[1];
    						String timefora = aux[6].split(": ")[1];
    						int COD= Integer.parseInt(SCodg);
    						float valor= Float.parseFloat(Svalor);
    						Jogo jawgo = new Jogo (timecasa, timefora);
    						Ticket t = new Ticket(COD, Nome, nasc, valor, jawgo);
    					tck.add(t);
    				}

Não entendo como não consigo acessar o Array [1], se o Split é ": ", e está correto no arquivo.

Conteúdo do arquivo : Conteúdo exato do Arquivo :
Ticket | Codigo: 1 | Comprador: Paulo | Nascimento: 30 10 98 | Valor: 30.0 | Time_casa: Fla | Time_Fora: Flu
Ticket | Codigo: 2 | Comprador: Maria | Nascimento: 30 12 89 | Valor: 33.0 | Time_casa: Fla | Time_Fora: Flu

Erro gerado : Erro ao ler do arquivojava.lang.ArrayIndexOutOfBoundsException: 1

Alguem sabe como deixar essa função com a leitura correta do arquivo?

Como você não mostra o arquivo, não tem como afirmar se está certo. Como você não disse qual a mensagem de erro e qual linha dispara o mesmo, também fica complicado.
Meu chute é: se for numa linha em que você “splita” por :, provavelmente esteja parecido com isso:

blablablabla: bleble
bliblibli:

A primeira linha será convertida em um vetor de 2 posições ([blablablabla, bleble]) e a segunda em um de uma posição ([bliblibli]), o que torna ineficiente o acesso a posição 1 do vetor gerado.

O erro gerado é arrayindexoutofboundsexception: 1, não tem outra informação do erro, já que o mesmo é gerado como “arquivojava”.
o arquivo é um txt com as exatas informações contidas no final da mensagem.

Obrigado pela explicação.

Quando você quebra no " | ", a posição 0 do vetor só é só “Ticket”, logo, ao fazer split com o “:”, você tem um array de 1 posição. É onde ocorre o erro.
Ou você ignora a posição 0 ou você valida e verificar se a String contém ": " antes de fazer o split.

1 curtida

Parece que o problema é o Split não reconhecendo o regex, tentando descobrir como arruma, o splis só ta reconhecendo o espaço " " como Split valido, ignorando qualquer character que eu coloco String aux[] = linha.split(" | ");

Problema resolvido ao trocar o Token do Split, e salvar apenas as strings necessárias no arquivo, para o arraylist.