Ler arquivos, numeros da mega

36 respostas
R

ola no site da caixa (www.caixa.gov.br) , se vc ver, tem um link que mostra todos os resultados da mega sena por exemplo. estou pensando em fazer um programa que leia tudo. já tenho um que gera numeros inclusive, faz sorteios aleatorios, como um simulador, posso tentar mandar o jar...
mas a idéia era comparar a série criada pelos já sorteados, para ver se por acaso já existe, seria também uma sorte (inutil) incrivel, acertar aleatoriamente um ex-numero da mega sena, mas parece interessante, para estudo.

já peguei um modelo para ler de txt, segue aí...
public class Teste1 {
    public static void main(String[] args) {
        File f = new File("c:/input.txt");
        if(!f.exists()){ System.exit(-1);}
        try {
            BufferedReader in = new BufferedReader(new FileReader(f));
            String line;      int lineCount = 0;
            while((line = in.readLine())!=null)
            {
                System.out.println("LINHA DO ARQUIVO Nº: " + ++lineCount);
                System.out.println("LINHA : " + line);
               
              
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

mas quero ler somente alguns trechos da linha, acho que vou ter que usar o split, ou métodos da String para isto.(foi a idéia solução que já achei, existe outra?)
mãos a obra.

o segundo arquivo talvez precise por em uma pasta lib... avisar se conseguir ou interessar, ou nao funcionar. valeu.

36 Respostas

R

os arquivos inverteram é o primeiro que precisa ir talvez na pasta lib, por exemplo. o swinglayout…

R

fiz com substring, mas ta dando erro, que sera?

public class Teste1 {
    public static void main(String[] args) {
        File f = new File("c:/input2.txt");
        if(!f.exists()){ System.exit(-1);}
        try {
            BufferedReader in = new BufferedReader(new FileReader(f));
            String line;      int lineCount = 0;
            while((line = in.readLine())!=null)
            {
                System.out.println("LINHA DO ARQUIVO Nº: " + ++lineCount);
                System.out.println("LINHA : " + line);
                String minhaString1="";
               String minhaString2 = minhaString1.substring(1, 2);
              
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

erros:

java.lang.StringIndexOutOfBoundsException: String index out of range: 2 LINHA DO ARQUIVO Nº: 1 LINHA : Resultado da Mega-sena at java.lang.String.substring(String.java:1934) at entradadedados.Teste1.main(Teste1.java:39) CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

C

Você está pegando uma substring de uma string vazia

R

ok, isto eu ja havia conseguido perceber. mas ainda assim...
ele nao consegue pegar da line...
[code]
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.StringTokenizer;

/**
* @author bruno
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class Teste1 {

public static void main(String[] args) {
String minhaString2 = "";

File f = new File("c:/input2.txt");
if (!f.exists()) {
System.exit(-1);
}
try {
BufferedReader in = new BufferedReader(new FileReader(f));
String line;
int lineCount = 0;
while ((line = in.readLine()) != null) {
System.out.println("LINHA DO ARQUIVO Nº: " + ++lineCount);
System.out.println("LINHA : " + line);
String minhaString1 = "";
String minhaString3 = line.substring(4, 8);
int tamanhoString = line.length();

System.out.println("string3" + minhaString3);
System.out.println("tamanho da string: " + tamanhoString);

}
} catch (Exception e) {
e.printStackTrace();
}


}
}

[code]

ai nao entendo.

R

da o mesmo erro acima… deu errado o code, mas da de entender nao?

R
vou postar o código se alguém quiser fazer teste.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.StringTokenizer;

public class Teste1 {

    public static void main(String[] args) {
        String minhaString2 = "";

        File f = new File("c:/input2.txt");
        if (!f.exists()) {
            System.exit(-1);
        }
        try {
            BufferedReader in = new BufferedReader(new FileReader(f));
            String line;
            int lineCount = 0;
            while ((line = in.readLine()) != null) {
                System.out.println("LINHA DO ARQUIVO Nº: " + ++lineCount);
                System.out.println("LINHA : " + line);
                String minhaString1 = "";
                String minhaString3 = line.substring(4, 8);
                int tamanhoString = line.length();

                System.out.println("string3" + minhaString3);
                System.out.println("tamanho da string: " + tamanhoString);


            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        
    }
}
C

qual o erro agora?

R

era aquele anterior, array of bounds… mas veja descobri algo…

neste codigo todo

public class Teste1 {

public static void main(String[] args) {
String minhaString2 = "";

File f = new File("c:/input.txt");
if (!f.exists()) {       System.exit(-1);  }
        try {
            BufferedReader in = new BufferedReader(new FileReader(f));
            String line;
            int lineCount = 0;
            while ((line = in.readLine()) != null) {
                //System.out.println("LINHA DO ARQUIVO Nº: " + ++lineCount);
                System.out.println("LINHA : " + line);

                String minhaString1 = "";
                
                int tamanhoString = line.length();
                //  System.out.println("tamanho da string: " + tamanhoString);
                CharSequence minhaString3 = line.subSequence(4,10);
                System.out.println("string3" + minhaString3);
             


            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}

mudei para um arquivo mais “comum” e aí funcionou. sinal que o problema está em ler este da mega sena que é complexo…
achei até este [size=18]subSequence [/size]acima…

R

o erro era este abaixo

java.lang.StringIndexOutOfBoundsException: String index out of range: 2

LINHA DO ARQUIVO Nº: 1

LINHA : Resultado da Mega-sena

at java.lang.String.substring(String.java:1934)

at entradadedados.Teste1.main(Teste1.java:39)

CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

nao array of bounds como falei, quis dizer que era mais ou menos isto. mas é o acima… quero ler o arquivo que vem da net, as vezes vem com caracteres invisiveis, sei la… conseguiu baixar todos os resultados no site da caixa? é interessante ver.

R

fui ler de um outro html da o mesmo problema, será uma linha em branco? que da null no while… deve ser ne?

C

Se esta dando IndexOutOfRange é porque você está acessando um indice que está fora dos limites da string.
você está colocando uma linha assim :

O que te garante que essa string vai ter o indice 7 (8-1) ?

É isso que está errado, você precisa saber o formato do arquivo para ler corretamente

R

é, é algo haver com espaços em branco também , na linha, aí excede o tamanho …

run: LINHA : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> string3DO LINHA : <HTML> string3TM LINHA : <HEAD> string3EA LINHA : <TITLE>Untitled</TITLE> string3IT LINHA : <META NAME="GENERATOR" CONTENT="MAX's HTML Beauty++ 2004"> string3ET LINHA : </HEAD> string3HE LINHA : <BODY> string3OD LINHA : testar leitura string3st LINHA : </BODY> string3BO LINHA : </HTML> string3HT CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

resultado de leitura em html. se aumentar , estoura, pois tem linha com poucos caracteres.

//solutions? vou pensar.
é o erro é exatamente : java.lang.StringIndexOutOfBoundsException: String index out of range: 2

mas já vou fazer um if aqui, um segundo.

R

int tamanhoString = line.length(); System.out.println("tamanho da string: " + tamanhoString); if (tamanhoString>80){ CharSequence minhaString3 = line.subSequence(12,33); System.out.println("string3" + minhaString3); System.out.println("string3 " + minhaString3);}

assim funcionou a leitura.

por exemplo, uma parte:

LINHA : 106 15/03/1998 05 16 24 35 38 39 9.795.278,00 0 0,00 94 7.678,27 5390 133,65 SIM 2.268.378,66 3.000.000,00 0,00
tamanho da string: 111
string398 05 16 24 35 38 39
string3 98 05 16 24 35 38 39
LINHA : 107 22/03/1998 02 04 16 24 51 52 0,00 0 0,00 35 21.494,23 3554 211,26 SIM 3.171.136,01 0,00 0,00
tamanho da string: 96
string398 02 04 16 24 51 52
string3 98 02 04 16 24 51 52

e na outra, ja muda, e nao le, mas to vendo aqui, tudo bem.

quero pegar só os numeros da mega sena, para trabalhar com eles, mas está mudando de linha para a linha, a subsequencia, entende?

talvez com startsWith, vou ver.

C

Uma solução para o seu problema é pegar a string line e quebra-la em tokens separados por espaços em branco,
os numeros da mega-sena começam no terceiro token e terminam no oitavo token, isso resolve seu problema

R

interessante, nao sei nada de token… estou tentando com starsWith…

em uma parte por exemplo, leu assim

substring: 11 08 11 14 30 36 38 substring: 11 04 23 39 52 55 56 substring: 11 08 30 40 44 59 60 substring: 11 20 21 26 29 31 36 substring: 11 10 15 28 31 33 38

11 é o ano… seria apartir de 2011…

fiz isto, mas nao deu…

if ( minhaString3.startsWith("11") ) { minhaString3.replace("11", " ") ; }

no inicio por exemplo, ele le

substring: 04 05 30 33 41 52 0, substring: 09 37 39 41 43 49 0, substring: 10 11 29 30 36 47 0, substring: 01 05 06 27 42 59 0,

nao pega o ano, mas pega algo a mais…

estou vendo, vou ver algo sobre token… :roll: :lol:

C

Use isso…

http://download.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html

R

tb posso usar alguns ifs, pois o que está mudando ali é o numero do concurso, que muda a posição das letras, primeiro é 1, 10 100 1000, entende[url]?

vc viu o arquivo com o resultado dos números…

alguns ifs, talvez seje mais simples, pois para chegar a 10000, um novo if, tambem vai demorar bastante.

C

tb posso usar alguns ifs, pois o que está mudando ali é o numero do concurso, que muda a posição das letras, primeiro é 1, 10 100 1000, entende[url]?

vc viu o arquivo com o resultado dos números…

alguns ifs, talvez seje mais simples, pois para chegar a 10000, um novo if, tambem vai demorar bastante.

Isso não é uma boa solução, vai deixar seu código pouco legível e dificil de alterar, a solução que eu te dei resolve de maneira muito melhor o problema.

P

Olá amigo, uma vez fiz um trabalho academico sobre estatistica e fiz o download de todos s numeros sorteados da mega até o atual, que é uma planilha do excel que contem todos os dados dos serteios como numero do sorteio, data e hora, numeros srteados, ordem de sorteio dos numeros e quantos ganhadores tiveram em cada jogo sorteado. bastante interessante, no entanto eu criei uma classe Carga.java que importava esse excel pra minha base MySQL. è bem simples, hj nao tenho mais essa classe se nao te mandava, mas se vc pesquisar por Java excel vc vai char um exemplo com uma api super fácil de mexer, ou até mesmo exposrtar para um arquivo CSV separados por virgula as células da planilha e dai fazer um parse na string com o split(","), quebrando em um array onde na primeira posição vc tem a o numero do sorteio, depois a data depois o primero numero sorteado, segundo numero etc…

Vale a pena tentar OK!
Fallow

R

após tentar um chuncho sem exito, cedi ao token…

fiz isto…

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.StringTokenizer;

public class Teste1 {
    public static void main(String[] args) {
        String minhaString2 = "";
        //File f = new File("c:/leitura.html");
        File f = new File("c:/input2.txt");
        if (!f.exists()) {
            System.exit(-1);
        }
        try {
            BufferedReader in = new BufferedReader(new FileReader(f));
            String line;
            int lineCount = 0;
            while ((line = in.readLine()) != null) {
                //System.out.println("LINHA DO ARQUIVO Nº: " + ++lineCount);
                 System.out.println("LINHA : " + line);
                String minhaString1 = line.trim();
                // System.out.println("minhastring1: " + minhaString1);
                int tamanhoString = line.length();
                System.out.println("tamanho da string: " + tamanhoString);
                //if (tamanhoString>80){ CharSequence minhaString3 = line.subSequence(13,33);  System.out.println("substring: " + minhaString3);
                if (tamanhoString > 80) {
                    String minhaString3 = line.substring(13, 33);
                    System.out.println("substring: " + minhaString3);
                }
                
                StringTokenizer st = new StringTokenizer(line);
     while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
     }



                  
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

notei que separou tudo… em linhas, ok…

exemplo

LINHA : 1202 04/08/2010 08 09 11 48 53 60 20.920.800,00 0 0,00 63 19.441,55 4195 417,10 SIM 4.311.607,33 7.000.000,00 29.949.692,00 tamanho da string: 123 substring: 10 08 09 11 48 53 60 1202 04/08/2010 08 09 11 48 53 60 20.920.800,00 0 0,00 63 19.441,55 4195 417,10 SIM 4.311.607,33 7.000.000,00 29.949.692,00 LINHA : 1203 07/08/2010 07 09 30 33 38 55 25.095.694,00 0 0,00 99 14.840,80 6138 341,95 SIM 7.018.099,86 10.000.000,00 30.336.333,81 tamanho da string: 124 substring: 10 07 09 30 33 38 55 1203 07/08/2010 07 09 30 33 38 55 25.095.694,00 0 0,00 99 14.840,80 6138 341,95 SIM 7.018.099,86 10.000.000,00 30.336.333,81 LINHA : 1204 11/08/2010 05 10 25 39 43 52 26.275.440,00 0 0,00 95 16.192,71 6613 332,31 SIM 18.316.592,66 22.000.000,00 30.741.151,60 tamanho da string: 125

agora devo pegar as linhas que quero dentro do token entao? pensando aqui :roll: :oops: 8) :cry: :frowning:

R

quero sempre imprimir da linha 3 a linha 8 ou dos tokens 3 a 8.
procuro metodo para fazer isto. e inclusive guardar isto em outra string.

grato.

C

Isso ai , agora voce tem que pegar do terceiro ao oitavo token de cada linha, pois o primeiro e o segundo são o numero do sorteio e a data.

assim,

nextInt() //Descarta numero do sorteio
nextInt() //Descarta data do sorteio
num1 = nextInt() // pega o primeiro numero
num2 = nextInt() // pega o segundo
… e assim vai ate o sexto
num6 = nextInt()

tem que fazer isso para cada linha

R
package entradadedados;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.StringTokenizer;

public class Teste1 {
    public static void main(String[] args) {
        String minhaString2 = "";
        //File f = new File("c:/leitura.html");
        File f = new File("c:/input2.txt");
        if (!f.exists()) {
            System.exit(-1);
        }
        try {
            BufferedReader in = new BufferedReader(new FileReader(f));
            String line;
            int lineCount = 0;
            while ((line = in.readLine()) != null) {
                //System.out.println("LINHA DO ARQUIVO Nº: " + ++lineCount);
                 System.out.println("LINHA : " + line);
                String minhaString1 = line.trim();
                // System.out.println("minhastring1: " + minhaString1);
                int tamanhoString = line.length();
                System.out.println("tamanho da string: " + tamanhoString);

                //pega so strings grandes
                if (tamanhoString > 80) {
                    String minhaString3 = line.substring(13, 33);
                    System.out.println("substring: " + minhaString3);
                }
                 int contador=0;                
                StringTokenizer st = new StringTokenizer(line);                
                while (st.hasMoreTokens()) {
                System.out.println(st.nextToken());  
     }



                  
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
R

com isto:

StringTokenizer st = new StringTokenizer(line);

while (st.hasMoreTokens()) {

System.out.println(st.nextToken());

  System.out.println(st.countTokens());

ve que ele conta os tokens de tras para frente.

que são 18… vou querer, do 15, ao 10 acredito… tem metodo?

R

em relação ao excel eu ja havia pensado.
mas eu quero depois gerar novos numeros e comparar com os que já saíram por exemplo, pois ao menos acredito que estes não saiam novamente, por exemplo…

e também ver a maior incidencia de números… noto que as vezes repetem-se geralmente duas dezenas de cada numero. e na unidade tb, duas ou tres vezes, enfim. calculos são possiveis. :slight_smile:

acho que com excel ia ficar dificil estes calculos, quero os numeros a disposição, para programar por exemplo.

R

se puder olhe o jar, do meu simulador mega…

tenho os resultados, aqui. está no site da caixa.gov.br em loterias, mega sena.

R

nao posso chamar o token por numero ou seja quero o de 16 a 11. só através de next ? agradeço. vou pesquisar mais e tentar.

R

nao sei como ler os tokens que quero...

tentei com o next int, nao da.

fiz com next element nao da
public class Teste1 {  
    public static void main(String[] args) {  
        File f = new File("c:/input2.txt");  
        if (!f.exists()) {          System.exit(-1);         }  
        try {  
          BufferedReader in = new BufferedReader(new FileReader(f));  
          String line;  
          while ((line = in.readLine()) != null) {  
      
          StringTokenizer st = new StringTokenizer(line);     
            while (st.hasMoreTokens()) {  
               
                st.nextElement();  
                   st.nextElement();  
                      st.nextElement();  
                         st.nextElement();  
                            st.nextElement();  
                               st.nextElement();  
                                  st.nextElement();  
                                     st.nextElement();  
                                        st.nextElement();  
                                           st.nextElement();  
                //st.nextToken();
              System.out.println(st.nextToken());   
                 System.out.println(st.countTokens());
            }
          } 
          
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

se tirar os next element, o código funciona...
mas nao resolve.

estou obtendo isto:
run:
java.util.NoSuchElementException
	at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
	at testesgerais2.Teste1.main(Teste1.java:22)
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

dicas para ler tokens especificos?

C

qual token voce quer ler?

R

ola cfred, ainda estou com este problema...

estou fazendo de outra forma, mas ainda nao pego o token que quero. vc sabe, os numeros da mega, no caso, somente.
public class Teste1 {  
    public static void main(String[] args) {  
        File f = new File("c:/input2.txt");  
      //  if (!f.exists()) {          System.exit(-1);         }  
        try {  
          BufferedReader in = new BufferedReader(new FileReader(f));  
          String line;  
          while ((line = in.readLine()) != null) {  
      
          StringTokenizer st = new StringTokenizer(line);     
          
       //  String test = "It's the number 1 way.";
ArrayList<String> tokens = new ArrayList<String>();
		
Scanner tokenize = new Scanner(line);
while (tokenize.hasNext()) {
    tokens.add(tokenize.next());
}
System.out.println(tokens); 
//System.out.println(tokens.subList(8, 3)); 
          
          
          
        //  while (st.hasMoreTokens()) {  
          //    System.out.println(st.nextElement());  
            //    }
          
          
          
          } 
          
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}
resultado
run:
[Resultado, da, Mega-sena
[]
[]
[]
[Concurso, Data, Sorteio, 1�, Dezena, 2�, Dezena, 3�, Dezena, 4�, Dezena, 5�, Dezena, 6�, Dezena, Arrecadacao_Total, Ganhadores_Sena, Rateio_Sena, Ganhadores_Quina, Rateio_Quina, Ganhadores_Quadra, Rateio_Quadra, Acumulado, Valor_Acumulado, Estimativa_Pr�mio, Acumulado_Natal]
[1, 11/03/1996, 04, 05, 30, 33, 41, 52, 0,00, 0, 0,00, 17, 39.158,92, 2016, 330,21, SIM, 1.714.650,23, 0,00, 0,00]
[2, 18/03/1996, 09, 37, 39, 41, 43, 49, 0,00, 1, 2.307.162,23, 65, 14.424,02, 4488, 208,91, N�O, 0,00, 0,00, 0,00]
[3, 25/03/1996, 10, 11, 29, 30, 36, 47, 0,00, 2, 391.192,51, 62, 10.515,93, 4261, 153,01, N�O, 0,00, 0,00, 0,00]
[4, 01/04/1996, 01, 05, 06, 27, 42, 59, 0,00, 0, 0,00, 39, 15.322,24, 3311, 180,48, SIM, 717.080,75, 0,00, 0,00]
[5, 08/04/1996, 01, 02, 06, 16, 19, 46, 0,00, 0, 0,00, 98, 5.318,10, 5399, 96,53, SIM, 1.342.488,85, 0,00, 0,00]
[6, 15/04/1996, 07, 13, 19, 22, 40, 47, 0,00, 0, 0,00, 109, 7.214,66, 7147, 110,03, SIM, 2.286.166,33, 0,00, 0,00]
[7, 22/04/1996, 03, 05, 20, 21, 38, 56, 0,00, 0, 0,00, 100, 8.746,05, 5736, 152,48, SIM, 3.335.692,28, 0,00, 0,00]
[8, 29/04/1996, 04, 17, 37, 38, 47, 53, 0,00, 0, 0,00, 60, 16.084,11, 5262, 183,40, SIM, 4.493.748,19, 0,00, 0,00]
[9, 06/05/1996, 08, 43, 54, 55, 56, 60, 0,00, 0, 0,00, 17, 60.043,79, 2175, 469,31, SIM, 5.718.641,49, 0,00, 0,00]
[10, 13/05/1996, 04, 18, 21, 25, 38, 57, 0,00, 0, 0,00, 251, 6.638,45, 12590, 132,35, SIM, 13.334.769,81, 0,00, 0,00]
[11, 20/05/1996, 15, 25, 37, 38, 58, 59, 0,00, 1, 15.591.365,07, 148, 12.706,05, 9442, 199,16, N�O, 0,00, 0,00, 0,00]
[12, 27/05/1996, 04, 16, 19, 20, 27, 43, 0,00, 0, 0,00, 108, 6.791,17, 6454, 113,64, SIM, 880.136,24, 0,00, 0,00]
[13, 03/06/1996, 18, 32, 47, 50, 54, 56, 0,00, 0, 0,00, 43, 20.543,98, 2934, 301,09, SIM, 1.940.205,35, 0,00, 0,00]
[14, 10/06/1996, 02, 16, 23, 27, 47, 53, 0,00, 0, 0,00, 85, 10.458,19, 5323, 167,00, SIM, 3.006.941,32, 0,00, 0,00]
[15, 17/06/1996, 12, 33, 35, 51, 52, 60, 0,00, 0, 0,00, 57, 17.919,89, 3931, 259,84, SIM, 4.232.661,35, 0,00, 0,00]
[16, 24/06/1996, 20, 32, 34, 49, 58, 60, 0,00, 0, 0,00, 31, 33.307,13, 3250, 317,70, SIM, 5.471.686,62, 0,00, 0,00]
[17, 01/07/1996, 06, 10, 13, 19, 20, 51, 0,00, 1, 6.789.869,08, 144, 7.628,37, 9376, 117,16, N�O, 0,00, 0,00, 0,00]
[18, 08/07/1996, 23, 27, 36, 37, 42, 56, 0,00, 0, 0,00, 52, 13.763,52, 4484, 159,61, SIM, 858.843,48, 0,00, 0,00]
[19, 15/07/1996, 05, 10, 12, 24, 25, 60, 0,00, 0, 0,00, 159, 5.380,14, 9250, 92,48, SIM, 10.506.266,73, 0,00, 0,00]
[20, 22/07/1996, 11, 25, 28, 30, 33, 51, 0,00, 0, 0,00, 72, 15.486,97, 5728, 194,67, SIM, 11.844.340,83, 0,00, 0,00]
[21, 29/07/1996, 06, 33, 36, 46, 49, 53, 0,00, 0, 0,00, 63, 17.694,19, 5030, 221,62, SIM, 13.182.021,44, 0,00, 0,00]
[22, 05/08/1996, 01, 09, 31, 38, 46, 56, 0,00, 0, 0,00, 47, 27.212,90, 4865, 262,90, SIM, 14.716.828,84, 0,00, 0,00]
[23, 12/08/1996, 17, 37, 39, 51, 52, 59, 0,00, 0, 0,00, 74, 20.198,46, 4897, 305,23, SIM, 16.510.452,00, 0,00, 0,00]
[24, 19/08/1996, 01, 08, 14, 28, 33, 43, 0,00, 1, 18.661.679,61, 227, 7.897,31, 13486, 132,93, N�O, 0,00, 0,00, 0,00]
[25, 25/08/1996, 24, 43, 50, 54, 55, 56, 0,00, 0, 0,00, 28, 26.338,50, 2741, 269,06, SIM, 884.973,50, 0,00, 0,00]
[26, 01/09/1996, 10, 22, 50, 53, 57, 58, 0,00, 0, 0,00, 16, 52.473,74, 1823, 460,55, SIM, 1.892.469,30, 0,00, 0,00]
[27, 08/09/1996, 13, 17, 20, 33, 44, 51, 0,00, 0, 0,00, 99, 9.306,24, 6466, 142,49, SIM, 2.998.050,68, 0,00, 0,00]
[28, 15/09/1996, 03, 06, 22, 24, 54, 60, 0,00, 0, 0,00, 50, 19.749,22, 4895, 201,73, SIM, 4.183.003,48, 0,00, 0,00]
[29, 22/09/1996, 03, 08, 14, 43, 56, 58, 0,00, 1, 5.401.793,60, 44, 23.083,15, 5248, 193,53, N�O, 0,00, 0,00, 0,00]
[30, 29/09/1996, 07, 14, 15, 29, 38, 50, 0,00, 0, 0,00, 80, 11.347,74, 5885, 154,26, SIM, 10.127.520,80, 0,00, 0,00]
R

e aí turma? algum auxílio ? de fato o nextInt nao funciona para o token,
talvez porque ele é uma String… continuo buscando uma alternativa de pegar os tokens especificos .

Fiz com o ArrayList, talvez consiga achar a posição dentro do arraylist, isto pode funcionar. este é o teste agora.

R

aqueles do numeros da mega, acho que era do 11 ao 16, vou tentar com o arraylist, em todo caso, tambem surgiu problema para mostrar somente o que quero, mas continuo pesquisando. :oops: :roll: qualquer help é bem vindo.

R

segue aí os resultados da mega em htm…
é deste arquivo que estou tentando ler…
apesar que passei para txt…
mas pode ser em htm mesmo…

P

Olá raghy,

Ao invés de usar o StringTokenizer, use esse arquivo CSV com todas as colunas separads por ";", assim é mais facil vc fazer assim:

package br.com.dominio1.filters;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class CargaMega {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		File file = new File("C:\\Sorteios_da_mega.csv");

		try {
			BufferedReader bf = new BufferedReader(new FileReader(file));
			String s = null;
			String[] results;
			System.out.println("************************** Resultados da Mega ****************************");
			while ((s = bf.readLine()) != null) {

				results = s.split(";");
				if (results != null) {
					System.out.print("\n");
					System.out.print("[");

					for (int i = 0; i < results.length; i++) {

						System.out.print(results[i]);
						System.out.print("|");
					}
					System.out.print("]");
				}
			}
			System.out.print("\n\n************************** FIM dos Resultados da Mega ****************************");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

Cada indice do arrai retornado pelo split, corresponde a uma coluna como data do sorteio, é soh vc ver a ordem as colunas no arquivo csv. Quando eu fiz um trabalho academico sobre estatistica, eu criei um objeto Sorteio e mapiei ele com JPA, cada coluna eu setava em um atributo correspondent no objeto sorteio e depois mandava gravar no banco, claro que não mandava gravar no banco logo em seguida, cada objeto preenchido eu jogava numa lista e depois passava a lista para o hibernate gravar na base numa fez soh, por questão de desempenho.

Espero ter ajudado
Abraço

R

no meu último código, usei arraylist, acho que de tokenizer ali, só tem os nomes das variaveis e talvez o has token no while… não deve ser dificil pegar a posição dentro do arraylist, mas de fato, ainda nao tive mais tempo de faze-lo. o projeto ficou interrompido no último progresso. Nesta sua forma, não sei se consigo pegar somente os números como eu quero. como identificaria, a posição dos números ou tokens (tambem são, separados por vírgulas, nao?), ou pedaços da string, para usar somente alguns?

Continuo pensando, pesquisando e pretendo me dedicar logo a isso novamente. Agradeço as opniões e auxílios. Certamente fazem parte do forum, o pensar em conjunto e também ter informações sobre este assunto. :-o :lol: :wink:

P

Ola amigo, vc chegou e ver o código e o arquivo que te mandei. O Arquivo é separado por ponto e virgula. Sendo assim quando vc lê a linha o split vai quebrar a linha em um aray, onde cada indice do array vai ser uma coluna. Para vc pegar somente os numeros vc pode especificar o indice que vc quer, tipo os numeros começam no indice 2
São 6 numeros então o laço começaria no indice 2

for(int i=2;i<6;i++){
 
Integer numero = s[i];

}

É um processo extremamente simples, não tem erro, veja no arquivo csv, qual é a coluna que vc quer pegar, a primeira coluna começa vai ser o indice 0 do seu array quando vc ler alinha toda e usar o split(";")…

Fallow

Criado 24 de maio de 2011
Ultima resposta 29 de mai. de 2011
Respostas 36
Participantes 3