Se vuoi un modo per memorizzare i dati in maniera da poter poi leggerli e rielaborarli da un programma io sconsiglierei un file excel, che è relativamente difficile da trattare (anche se esistono librerie per interagire con excel, JExcel e Apache POI ad esempio).
Un database dovrebbe andare bene, io personalmente non li ho ancora mai usati con Java, ma penso vadano bene anche file più semplici (anche csv o semplici file di testo), eventualmente dividendo le diverse statistiche su più file, che andranno poi rielaborati.
Un'altra cosa è come vuoi presentare in seguito i dati, un file excel è comodo da vedere e da modificare a mano, un po' meno con Java (ma si può fare tranquillamente penso), potresti usare anche un'interfaccia grafica, una pagina web o un'altra soluzione.
E' importante però trovare un modo per reperire i dati in rete senza dover aggiornarli continuamente, questo di sicuro.
Sostanzialmente hai bisogno di un programma che scarichi una pagina web, o un altro tipo di risorsa con i dati, vada a prendere le informazioni interessanti, e successivamente le elabori.
Scaricare una pagina web di base è una cosa molto semplice, bastano poche righe di codice, la cosa ovviamente si complica se la risorsa non è direttamente accessibile da tutti ma serve effettuare prima un login, immettere una password o altro.
Prendere le informazioni interessanti può essere la parte più difficile: ci sono vari modi (tra cui l'uso delle espressioni regolari), ma se trovi una pagina web abbastanza incasinata non è affatto immediato venirne a capo, e soprattutto non hai la certezza che il programma funzioni sempre, perché non sai se la pagina cambierà il modo di esporre i dati in futuro.
Per fare un esempio, scaricando la pagina dei risultati di diretta.it, ti trovi di fronte a qualcosa del genere:
A000¬ZCC÷0¬ZAF÷Italia¬~AA÷djl6NmRO¬AD÷1503859500¬ADE÷1503859500¬AB÷3¬CR÷3¬AC÷3¬CX÷Chievo¬ER÷Giornata 2¬RW÷0¬AX÷1¬BX÷-1¬WQ÷¬WM÷CHI¬AE÷Chievo¬WU÷chievo¬AG÷1¬BA÷1¬BC÷0¬WN÷LAZ¬AF÷Lazio¬WV÷lazio¬AS÷2¬AZ÷2¬AH÷2¬BB÷1¬BD÷1¬AW÷1¬AN÷n¬~AA÷beSlnX3P¬AD÷1503859500¬ADE÷1503859500¬AB÷3¬CR÷3¬AC÷3¬CX÷Crotone¬ER÷Giornata 2¬RW÷0¬AX÷1¬BX÷-1¬WQ÷¬WN÷VER¬AF÷Verona¬WV÷verona¬AS÷0¬AZ÷0¬AH÷0¬BB÷0¬BD÷0¬WM÷CRO¬AE÷Crotone¬WU÷crotone¬AS÷0¬AZ÷0¬AG÷0¬BA÷0¬BC÷0¬AW÷1¬AN÷n¬~AA÷04EGsiCt¬AD÷1503859500¬ADE÷1503859500¬AB÷3¬CR÷3¬AC÷3¬CX÷Fiorentina¬ER÷Giornata 2¬RW÷0¬AX÷1¬BX÷-1¬WQ÷¬WM÷FIO¬AE÷Fiorentina¬WU÷fiorentina¬AG÷1¬BA÷0¬BC÷1¬WN÷SAM¬AF÷Sampdoria¬WV÷sampdoria¬AS÷2¬AZ÷2¬AH÷2¬BB÷2¬BD÷0¬AW÷1¬AN÷n¬~AA÷8UHOuVtg¬AD÷1503859500¬ADE÷1503859500¬AB÷3¬CR÷3¬AC÷3¬CX÷Milan¬ER÷Giornata 2¬RW÷0¬AX÷1¬BX÷-1¬WQ÷¬WN÷CAG¬AF÷Cagliari¬WV÷cagliari¬AH÷1¬BB÷0¬BD÷1¬WM÷ACM¬AE÷Milan¬WU÷ac-milan¬AS÷1¬AZ÷1¬AG÷2¬BA÷1¬BC÷1¬AW÷1¬AN÷n¬~AA÷jg7Tvkda¬AD÷1503859500¬ADE÷1503859500¬AB÷3¬CR÷3¬AC÷3¬CX÷Napoli¬ER÷Giornata 2¬RW÷0¬AX÷1¬BX÷-1¬WQ÷¬WM÷NAP¬AE÷Napoli¬WU÷napoli¬AS÷1¬AZ÷1¬AG÷3¬BA÷0¬BC÷3¬WN÷ATA¬AF÷Atalanta¬WV÷atalanta¬AH÷1¬BB÷1¬BD÷0¬AW÷1¬AN÷n¬~AA÷djAywTQB¬AD÷1503859500¬ADE÷1503859500¬AB÷3¬CR÷3¬AC÷3¬CX÷Spal¬ER÷Giornata
Ho cercato per un po' di riconoscere il formato, all'inizio pensavo che il numero di gol fatti fosse il primo numero dopo il nome della squadra scritto in minuscolo, ma non è così.
Non ho cercato molto in giro, ma ho trovato un sito che permette invece di scaricare un file csv che è tanto più facile da trattare (vedi il codice sotto).
Ogni volta però devi stare attento al formato, e soprattutto essere consapevole che può cambiare o che qualcosa può andare storto.
Ecco il codice:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
public class TestRisultati
{
public static void main (String [] args) {
try (BufferedReader reader = new BufferedReader (new InputStreamReader (new URL ("http://www.football-data.co.uk/mmz4281/1718/I1.csv").openStream ()))) {
ArrayList <String> list = new ArrayList <String> ();
String output = "", line, newLine = System.lineSeparator ();
while ((line = reader.readLine ()) != null) list.add (line);
for (int i = 0; i < (list.size () - 1)/ 10; i ++) {
output += (i + 1) + "a Giornata:" + newLine;
for (int j = 0; j < 10; j ++) {
String [] data = list.get (i * 10 + 1 + j).split (",");
output += newLine + data [2] + " - " + data [3] + "\t" + data [4] + ":" + data [5];
}
output += newLine + newLine;
}
System.out.println (output);
}
catch (Exception e) {
e.printStackTrace ();
}
}
}
Se compili ed esegui questo programma dovresti avere il seguente output:
1a Giornata:
Juventus - Cagliari 3:0
Verona - Napoli 1:3
Atalanta - Roma 0:1
Bologna - Torino 1:1
Crotone - Milan 0:3
Inter - Fiorentina 3:0
Lazio - Spal 0:0
Sampdoria - Benevento 2:1
Sassuolo - Genoa 0:0
Udinese - Chievo 1:2
2a Giornata:
Benevento - Bologna 0:1
Genoa - Juventus 2:4
Roma - Inter 1:3
Chievo - Lazio 1:2
Crotone - Verona 0:0
Fiorentina - Sampdoria 1:2
Milan - Cagliari 2:1
Napoli - Atalanta 3:1
Spal - Udinese 3:2
Torino - Sassuolo 3:0
Come vedi dipende tutto dal tipo di risorsa che trovi, in questo caso i dati sono separati da virgole e facilmente recuperabili, ma nel codice faccio alcune assunzioni che, se non rispettate, mandano tutto all'aria: ad esempio se dovesse mancare una partita (ad esempio se venisse rinviata) non potresti più prendere le righe a blocchi di dieci, e nel file non è nemmeno presente l'indicazione della giornata, quindi non sapresti come procedere.
Se invece il file fosse malformato, se mancassero le colonne fondamentali o peggio ci fosse una riga con meno di 6 colonne, il programma darebbe proprio errore.
Ti consiglio quindi prima di tutto di cercare le risorse più utili, con tutte le informazioni che cerchi e che siano facili da trattare, e poi di controllare sempre il risultato, senza dare per scontato che vada tutto a buon fine