Como comigo o aprendizado só funciona na prática, eis minhas dúvidas!!!
Primeiro o código:
Classe DataminingMegaSenapackage sorte;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class DataminingMegaSena {
public static Double formataStringToDouble(String strNro) {
String strAux;
String strRetorno = strNro;
Boolean ponto = false;
Boolean virgula = false;
if (strNro.indexOf(",") != -1)
virgula = true;
if(strNro.indexOf(".") != -1)
ponto = true;
if (virgula && ponto){
strRetorno = strNro.replace(".", "");
strAux = strRetorno.replace(",", ".");
strRetorno = strAux;
}
else if(virgula)
strRetorno = strNro.replace(",", ".");
return Double.parseDouble(strRetorno);
}
public static void main(String[] args) {
int LIMITE_CONCURSOS = 2000;
int QTDE_DEZENAS_CARTELA = 60;
URL u;
InputStream is = null;
DataInputStream dis;
String strConteudo = new String();
Sorteio sorteio[] = new Sorteio[LIMITE_CONCURSOS];
String strArray[] = new String[16];
try {
u = new URL("http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip");
is = u.openStream();
ZipInputStream zin = new ZipInputStream(is);
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
System.out.println("Descompactando Zip: " + ze.getName());
FileOutputStream fout = new FileOutputStream(ze.getName());
for (int c = zin.read(); c != -1; c = zin.read()) {
fout.write(c);
}
zin.closeEntry();
fout.close();
}
zin.close();
File file = new File("D_MEGA.HTM");
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
int idx = 0;
int idxSorteio = 0;
Date dt = new Date();
String strData;
while (dis.available() != 0) {
strConteudo = dis.readLine();
if (strConteudo.indexOf("</td>") != -1) {
strArray[idx] = strConteudo.replaceAll("<td>", "").replaceAll("</td>", "").trim();
//System.out.println("[" + strArray[idx] + "]");
if (idx == 15) {
sorteio[idxSorteio] = new Sorteio();//criado objeto CLiente
//System.out.println("0[" + strArray[0] + "]");
sorteio[idxSorteio].setNConcurso(Integer.parseInt(strArray[0]));
strData = strArray[1];
SimpleDateFormat f = new SimpleDateFormat("DD/MM/yyyy");
try {
dt = f.parse(strData);//Converte uma string em data no formato específico
} catch (ParseException e) {
e.printStackTrace();
}
//System.out.println("1[" + strArray[1] + "]");
sorteio[idxSorteio].setDataSorteio(dt);
//System.out.println("2[" + strArray[2] + "]");
sorteio[idxSorteio].setDezena1(Integer.parseInt(strArray[2]));
//System.out.println("3[" + strArray[3] + "]");
sorteio[idxSorteio].setDezena2(Integer.parseInt(strArray[3]));
//System.out.println("4[" + strArray[4] + "]");
sorteio[idxSorteio].setDezena3(Integer.parseInt(strArray[4]));
//System.out.println("5[" + strArray[5] + "]");
sorteio[idxSorteio].setDezena4(Integer.parseInt(strArray[5]));
//System.out.println("6[" + strArray[6] + "]");
sorteio[idxSorteio].setDezena5(Integer.parseInt(strArray[6]));
//System.out.println("7[" + strArray[7] + "]");
sorteio[idxSorteio].setDezena6(Integer.parseInt(strArray[7]));
//System.out.println("8[" + strArray[8] + "]");
sorteio[idxSorteio].setGanhadoresSena(Integer.parseInt(strArray[8]));
//System.out.println("9[" + strArray[9] + "]");
sorteio[idxSorteio].setRateioSena(formataStringToDouble(strArray[9]));
//System.out.println("10[" + strArray[10] + "]");
sorteio[idxSorteio].setGanhadoresQuina(Integer.parseInt(strArray[10]));
//System.out.println("11[" + strArray[11] + "]");
sorteio[idxSorteio].setRateioQuina(formataStringToDouble(strArray[11]));
//System.out.println("12[" + strArray[12] + "]");
sorteio[idxSorteio].setGanhadoresQuadra(Integer.parseInt(strArray[12]));
//System.out.println("13[" + strArray[13] + "]");
sorteio[idxSorteio].setRateioQuadra(formataStringToDouble(strArray[13]));
//System.out.println("14[" + strArray[14] + "]");
sorteio[idxSorteio].setAcumulado((String) strArray[14]);
//System.out.println("15[" + strArray[15] + "]");
sorteio[idxSorteio].setValorAcumulado(formataStringToDouble(strArray[15]));
idx = -1;
idxSorteio++;
}//end if idx == 15
idx++;
}//end if <td>
}//end while
fis.close();
bis.close();
dis.close();
//System.out.println(sorteio.length);
//Frequência de sorteio das dezenas sorteios:
//apenas imprime de 1 a 60, pretendo mais além fazer uma soma dos totais por dezena
for (int j = 1; j < QTDE_DEZENAS_CARTELA+1; j++){
if (j % 10 == 0 ){
System.out.println(j);
}
else {
if (j < 10)
System.out.print("0"+j+" - ");
else
System.out.print(j+" - ");
}
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
catch (MalformedURLException mue) {
System.out.println("Ouch - a MalformedURLException happened.");
mue.printStackTrace();
System.exit(1);
}
catch (IOException ioe) {
System.out.println("Oops- an IOException happened.");
ioe.printStackTrace();
System.exit(1);
}
finally {
try {
is.close();
}
catch (IOException ioe) {
// just going to ignore this one
}
} // end of 'finally' clause
} // end of main
}
Classe Sorteio
package sorte;
import java.util.Date;
public class Sorteio {
int nConcurso;
Date dataSorteio;
int dezena1;
int dezena2;
int dezena3;
int dezena4;
int dezena5;
int dezena6;
int ganhadoresSena;
double rateioSena;
int ganhadoresQuina;
double rateioQuina;
int ganhadoresQuadra;
double rateioQuadra;
String acumulado;
double valorAcumulado;
public int getNConcurso() {
return nConcurso;
}
public void setNConcurso(int concurso) {
nConcurso = concurso;
}
public Date getDataSorteio() {
return dataSorteio;
}
public void setDataSorteio(Date dataSorteio) {
this.dataSorteio = dataSorteio;
}
public int getDezena1() {
return dezena1;
}
public void setDezena1(int dezena1) {
this.dezena1 = dezena1;
}
public int getDezena2() {
return dezena2;
}
public void setDezena2(int dezena2) {
this.dezena2 = dezena2;
}
public int getDezena3() {
return dezena3;
}
public void setDezena3(int dezena3) {
this.dezena3 = dezena3;
}
public int getDezena4() {
return dezena4;
}
public void setDezena4(int dezena4) {
this.dezena4 = dezena4;
}
public int getDezena5() {
return dezena5;
}
public void setDezena5(int dezena5) {
this.dezena5 = dezena5;
}
public int getDezena6() {
return dezena6;
}
public void setDezena6(int dezena6) {
this.dezena6 = dezena6;
}
public int getGanhadoresSena() {
return ganhadoresSena;
}
public void setGanhadoresSena(int ganhadoresSena) {
this.ganhadoresSena = ganhadoresSena;
}
public double getRateioSena() {
return rateioSena;
}
public void setRateioSena(double rateioSena) {
this.rateioSena = rateioSena;
}
public int getGanhadoresQuina() {
return ganhadoresQuina;
}
public void setGanhadoresQuina(int ganhadoresQuina) {
this.ganhadoresQuina = ganhadoresQuina;
}
public double getRateioQuina() {
return rateioQuina;
}
public void setRateioQuina(double rateioQuina) {
this.rateioQuina = rateioQuina;
}
public int getGanhadoresQuadra() {
return ganhadoresQuadra;
}
public void setGanhadoresQuadra(int ganhadoresQuadra) {
this.ganhadoresQuadra = ganhadoresQuadra;
}
public double getRateioQuadra() {
return rateioQuadra;
}
public void setRateioQuadra(double rateioQuadra) {
this.rateioQuadra = rateioQuadra;
}
public String getAcumulado() {
return acumulado;
}
public void setAcumulado(String acumulado) {
this.acumulado = acumulado;
}
public double getValorAcumulado() {
return valorAcumulado;
}
public void setValorAcumulado(double valorAcumulado) {
this.valorAcumulado = valorAcumulado;
}
}
Na classe DataminingMegaSena eu importo o zip da caixa com os dados dos sorteios da megasena, e extraio o conteúdo para um array do tipo objeto. Até aqui fui juntando fragmentos de exemplos que encontrei aqui no forúm!!!
Gostaria de sua sugestão de como posso obter todos os nros sorteados por dezenas, por exemplo, a dezena 13 foi sorteada 114, a dezena 29 foi sorteada 114, etc... Eu tenho um array com varios objetos sorteio, como obter o totais? Gostaria de sugestões e opiniões, pois ajuda a abrir a kbça para novas possibilidades... :)


