Uso do split quando imprime os caracteres sai [Ljava.lang.String;@XXX

Opa, pessoal estou com um probleminha. Estou manipulando um arquivo *.txt e estou usando a função split para guardar os caracteres de cada linha em um um vetor.
Ele tem que ler os numeros que estão separados por espaço e imprimir, independente o número de caracteres. Só que quando imprime ele imprime isto:

Caracter nº1:[Ljava.lang.String;@1df38fd.
Caracter nº2:[Ljava.lang.String;@16a786.
Caracter nº3:[Ljava.lang.String;@1507fb2.
Caracter nº4:[Ljava.lang.String;@1efb836.
Caracter nº5:[Ljava.lang.String;@126e85f.
Caracter nº6:[Ljava.lang.String;@161f10f.

outra linha

Caracter nº1:[Ljava.lang.String;@1193779.
Caracter nº2:[Ljava.lang.String;@8916a2.
Caracter nº3:[Ljava.lang.String;@2ce908.
Caracter nº4:[Ljava.lang.String;@77158a.
Caracter nº5:[Ljava.lang.String;@27391d.
Caracter nº6:[Ljava.lang.String;@116ab4e.

Ele não imprime o caracter correto, alguém sabe como corrigir ? E desculpe a falta de conhecimento, pois sou novo na área de java ainda :smiley:

public class CalculatorExport {
	public static void main ( String args[] ) throws IOException
    {  
		String linha = null;
		int num1, num2;
		File fatores = new File("numbers.txt");
		FileReader reader = new FileReader("numbers.txt");
		BufferedReader leitor = new BufferedReader(reader);
		linha = leitor.readLine();
		while(linha!=null)
		{		
			String[] split = new String[linha.length()];
			
			for(int x=1;x<linha.length();x++)
			{
				split[x] = linha.split("^[0-9]{1,}\\s[0-9]{1,}$").toString();
				System.out.println("Caracter nº"+x+":"+ split[x] +".");
			}
			System.out.println("\n\noutra linha\n\n");
			
			
			linha = leitor.readLine();
		}
			leitor.close();
		reader.close();
    }  
}

>

o que acontece é que o split te retorna um array de string…

roda esse exemplo que vc vai sacar

String str = "JAVA DELPHI STRUTS SPRING HIBERNATE";
		String campos[] = str.split(" ");
		System.out.println(campos[0]);
		System.out.println(campos[1]);
                //System.out.prinln(campos[n]);
//ou ainda
String str = "JAVA DELPHI STRUTS SPRING HIBERNATE";
		String campos[] = str.split(" ");
		for (String string : campos) {
			System.out.println(string);
			
		}

sacou? vc ta recebendo dentro de cada posição do seu array vc recebe outro array…

:wink:

O que você quer é isso aqui:

[code]public class CalculatorExport {
public static void main ( String args[] ) throws IOException
{
BufferedReader leitor =
new BufferedReader(new FileReader(new File("numbers.txt")));
String linha = leitor.readLine();
while(linha!=null)
{
String[] split = linha.split("^[0-9]{1,}\s[0-9]{1,}$");

        for(int x=0;x < split.length; x++)   
        {   
            System.out.println("Caracter nº"+x+":"+ split[x] +".");   
        }   
        System.out.println("\n\noutra linha\n\n");   
           
        linha = leitor.readLine();   
    }   
    leitor.close();   
    reader.close();   
}     

} [/code]

@ViniGodoy
Cara deu erro, mas valeu pela ajuda ae.
Acho que é por ae, mais ainda tem algo errado ^^

@abelgomes
isso mesmo cara… exatamente isso, é que ele me retorna uma array de string, só tenho achar agora um modo de colocar cada caracter em um slot do array.

O jeito eu já te dei. Não compilei aquele código no eclipse, até pq não sei o seu formato de arquivo. Se tiver um errinho ali, é coisa boba.

O importante é que vc entenda a lógica.
Se sua expressão regular estiver certa, o split já está retornando os caracteres divididos nos slots. Só o que vc tem que fazer é imprimi-los.

Acho que o erro foi no forEach para array, que acho que não funciona…

@ViniGodoy

vlw cara quase deu certo, mas parece que não está indo mesmo^^, ele garra no split, a expressão regular está certa , tentei até sem expressão.

==edit==

ele fica sem erro nenhuma mas quando eu executo ele agarra no debug na linha que imprime o valor.

System.out.println("Caracter nº"+x+":"+ split[x] +".");

Funciona sim.

Funciona sim.[/quote]

Ah tá, acho que eu havia testado com um Vector.

@ViniGodoy

o erro era na expressão regular mesmo, acabou que já consegui o que eu queria ^^
O código ficou assim , muito obrigado pela ajuda :wink:

[code]package meritia;
import java.io.*;

public class CalculatorExport {
public static void main ( String args[] ) throws IOException
{
BufferedReader leitor = new BufferedReader(new FileReader(new File(“numbers.txt”)));

	String linha = leitor.readLine();
	while(linha!=null)
	{		
		String[] split = linha.split(" ");
		for(int x=0;x<split.length;x++)
		{
			System.out.println("Caracter nº"+x+":"+ split[x] +".");
		}
		System.out.println("\n\noutra linha\n\n");
		
		linha = leitor.readLine();
	}
	saida.flush();
	saida.close();
	leitor.close();
	leitor.close();
}  

}[/code]

Também funciona. Funciona com arrays primitivos e qualquer classe que extends Iterable.