Vix mano, foi mal. Mandei o exemplo errado, tem que tirar essa palavra-chave: static .
Po cara, muito obrigado vei de verdade mas n ta indo não, desisto.
Deu outro erro? Qual?
É pq no caso não ta comparando as duas arraylist
if (Lista.contains(resultadoLoto)) {
legal.setText("Parabéns você é o ganhador!!!");
} else {
legal.setText("Que pena, tenta na próxima...");
}
Essa parte não pode ser assim não.
Como tem que ser a lógica? Todos os itens de Lista
devem existir em resultadoLoto
?
Se a lógica for:
Todos os itens de
Lista
devem existir emresultadoLoto
Você pode tentar assim:
boolean ganhou = false;
for (Long numEscolhido : Lista) {
if (!resultadoLoto.contains(numEscolhido)) {
ganhou = false;
break;
}
ganhou = true;
}
if (ganhou) {
legal.setText("Parabéns você é o ganhador!!!");
} else {
legal.setText("Que pena, tenta na próxima…");
}
A classe Loto é uma API que chama os resultados e armazena nessa arraylist e eu acho que o erro ta por ai.
Pq vc acha isso? Essa chamada loto.recuperarResultados()
está retornando algum resultado?
Vc usa github? Se sim e se vc quiser, vc pode jogar seu projeto lah que eu consigo te ajudar a fazer ele funcionar.
Como assim retornando algum resultado?
Nessa parte:
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
Loto loto = new Loto();
try {
this.resultadoLoto = loto.recuperarResultados();
} catch (IOException ex) {
Logger.getLogger(Ltous.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
Você está instanciando a classe Loto
(instanciar é usar o new) e chamando o método recuperarResultados
, que foi feito para retornar uma lista de números (List<Long>
). Ou seja, esse método pode retornar uma lista com números ou uma lista vazia.
Pela lógica desse método (recuperarResultados
), ele está indo no site da caixa e capturando os numeros sorteados (que devem ser os números que deverão ser retornados). Se esses números não estiverem sendo retornados, vc deve ajustar o código que recupera os números do site da caixa.
Ahh sim, não ta retornando tipo eu coloco exatamente os mesmo valores da caixa e diz que não contem.
A API ta sendo feita eu acho que o negócio ta no armazenamento da arraylist.
Ta assim mesmo
public List recuperarResultados() throws IOException {
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);
CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
String URL ="http://www.loterias.caixa.gov.br/wps/portal/loterias/landing/lotofacil";
WebClient webClient = new WebClient(BrowserVersion.getDefault());
HtmlPage page = webClient.getPage(URL);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.waitForBackgroundJavaScript(9000);
System.out.println(page.getTitleText());
System.out.println(page.getUrl().toString());
List<HtmlElement> spans = page.getBody().getElementsByAttribute("span", "class", "ng-binding");
HtmlSpan concurso = (HtmlSpan) spans.get(0);
String ccs = concurso.getTextContent().replaceAll("\\s+", " ").trim();
System.out.println(ccs);
List<Long> resultados = new ArrayList();
List<HtmlElement> lista = page.getBody().getElementsByAttribute("table", "class", "simple-table lotofacil");
HtmlTable tabela = (HtmlTable) lista.get(0);
List<HtmlTableCell> cells = tabela.getBodies().get(0).getElementsByAttribute("td", "ng-repeat", "dezena in resultadoLinha");
cells.forEach(cell -> resultados.add(Long.parseLong(cell.getTextContent())));
return resultados;
}
}
Testei esse código e estourou erro pra mim.
Qual a versão do HtmlUnit que vc está usando?
Consegui recuperar os números sorteados, mas não usei HtmlUnit e precisei utilizar as libs: httpclient e gson.
Consegui recuperar os números usando essa URL: http://www.loterias.caixa.gov.br/wps/portal/loterias/landing/lotofacil/!ut/p/a1/04_Sj9CPykssy0xPLMnMz0vMAfGjzOLNDH0MPAzcDbz8vTxNDRy9_Y2NQ13CDA0sTIEKIoEKnN0dPUzMfQwMDEwsjAw8XZw8XMwtfQ0MPM2I02-AAzgaENIfrh-FqsQ9wBmoxN_FydLAGAgNTKEK8DkRrACPGwpyQyMMMj0VAcySpRM!/dl5/d5/L2dBISEvZ0FBIS9nQSEh/pw/Z7_61L0H0G0J0VSC0AC4GLFAD2003/res/id=buscaResultado/c=cacheLevelPage/=/?timestampAjax=1585528134569
Se tu animar tentar, me chama que eu te passo o que fiz. Flws!
Cara eu não sei.
Necessariamente tinha que usar as lib que ele deu, mas muito obrigado cara.