2009-06-27 10 views
1

Ich habe mich gefragt, was ich brauche, betrachten mit machen, ein Programm zu erhalten Knacken, die aus einer Excel-DateiErstellen einer Lotterie-Programm in Java

Ich dachte, machen ein Programm, das verwendet eine Excel-Tabelle lesen und liest sie in eine Liste von Kombinationen zu erzeugen, die nicht stattgefunden haben noch

Es ist nur ein bisschen Spaß, aber könnte eine gute challenege

dank

+0

Apache POI oder JExcelApi ist dein Kandidat. – akarnokd

+0

Allerdings benötigen Sie eine anständige Excel-Version, um so viele Zeilen/Spalten zu halten. – akarnokd

+0

Auch für eine 5 Kombination Lotteriespiel ist die mögliche Anzahl der Kombinationen etwa 47 Millionen. – akarnokd

Antwort

4

der direkte Weg zu bekommen Excel-Daten in Java ist natürlich POI. Sehr stabile, ausgezeichnete Bibliothek, und Sie können in und die Low-Level-Innereien von Excel arbeiten.

Bemerkenswert ist die Busy Developer's Guide to POI, die helfen sollte, einige der anfänglichen Schmerzen zu lindern.

Wenn Sie mehr Interesse daran haben, POI zu lernen und eine einfache Java-Übung zu machen, dann klingt das fair genug. Die interessanteren Fragen werden sein, wie die Millionen von Kombinationen angezeigt werden, die noch nicht aufgetreten sind, und wie man dies vom Standpunkt der Datenstruktur aus angehen kann (Hinweis: Verwenden Sie eine Mischung aus Hashtabellen-Lookups und Generierung, um den Speicheraufwand zu halten Minimum).

Wenn Sie dies wirklich ernst nehmen möchten, fragen Sie sich, ob eine Excel-Datei ein guter Speichermechanismus für diese Art von Daten ist. Das machen Sie wirklich: Excel als Datenspeicher verwenden. Es gibt bessere Alternativen.

3

Andy Khan helfen JExcel ist der Weg zu gehen, wenn Sie Excel verwenden. Ich habe festgestellt, dass es dem POI weit überlegen ist.

Persönlich sehe ich nicht, was es dich hier kauft. Sie können alle Kombinationen in einer flachen Datei generieren oder eine echte Datenbank verwenden, wenn dies erforderlich ist. Was ist mit Excel neben Bekanntheit und Allgegenwart?

+0

weil das ist, wie Sie die vorherigen Ergebnisse von der offiziellen Website in einer Excel-Datei erhalten –

+1

Das könnte sein, wie Sie sie von der Website herunterladen, aber sie müssen nicht unbedingt dort bleiben. Am Ende ist es natürlich deine Wahl. – duffymo

+0

ok dann könnte ich die Datei irgendwie als eine lange Liste von Zahlen speichern? dann könnte ich durchschleifen und dann nein, dass jede 6 Zahlen ist ein einziges Unentschieden –

3

Warum die Excel-Route überhaupt gehen?

Wenn der Punkt in Java Spaß haben und Spaß haben soll, muss Excel eine Möglichkeit haben, eine kommagetrennte Datei aus den Daten zu erzeugen. Lies das einfach und mach was du willst.

+0

alternativ könnte man fragen, warum Java verwenden? Obwohl es viele Tools gibt, um die beiden zu verbinden, gibt es auch andere Sprachen, die besser für die Arbeit mit Excel als für Java geeignet sind. – akf

+0

@akf, guter Punkt; Die Frage ist nicht sehr klar, aber vielleicht war der Hauptpunkt, "etwas Spaß zu haben und herumzuspielen" Excel-Dateien zu lesen. Heh: P – Jonik

+0

@Jonik Ich denke, es ist ein bisschen mehrdeutig, aber der Titel ist "Ein Lotterieprogramm in Java machen". Das brachte mich dazu, zu denken, dass seine Daten, nicht sein Fokus, in Excel waren. – Duck

0

Wie von anderen erwähnt, gibt es mehrere Bibliotheken und mehrere Beiträge für Sie, um loszulegen. Ich wollte Ihnen nur zwei Ansätze geben, um Ihr Ziel zu erreichen.

Für den Fall ‚eine Liste von Kombinationen zu erzeugen, die noch nicht aufgetreten sind‘

ich dieses Ziel zu verstehen, wie Sie eine Geschichte von den Ziehungen haben, und Sie wollen eine Reihe von Zufallszahl legt zu erzeugen, die sind nie in der Geschichte aufgetreten. Grundsätzlich brauchst du zuerst einen Zufallszahlengenerator und generierst die Lottozahlen. Dann nehmen Sie diesen Satz von Zahlen und versuchen, es in den historischen Daten zu finden. Wenn Sie es gefunden haben, beginnen Sie einfach neu und erstellen Sie ein neues. Basierend auf meinem Kommentar zu der Frage haben Sie praktisch die Möglichkeit sagen wir (5200/47M) finden Sie Ihre Nummern in der Verlaufsliste. Wiederholen Sie diesen ganzen Vorgang, bis Sie genug Anzahl haben.

Für den Fall ‚eine Liste von Kombinationen zu erzeugen, die bereits stattgefunden haben‘

Sie müssen im Grunde Duplikate in der History-Liste zu finden. Erstellen Sie ein Set<Integer> von jedem historischen Vorkommen und beginnen Sie, es zu einem weiteren Satz von Set<Set<Integer>> hinzuzufügen. Wenn die Nummer, die Sie hinzufügen, bereits während der Verarbeitung aufgetreten ist, erhalten Sie eine falsche Rückgabe von der add Methode dieser letzteren Gruppe. Dann drucken oder speichern Sie den doppelten Zahlensatz.

0

Verwenden Sie kommagetrennte Dateien anstelle von nativen Excel-Dateien. Wird dein Leben VIEL einfacher machen :)

+0

Und Excel wird ohne Schwierigkeiten in das CSV-Format speichern. CSV-Dateien können in einem normalen Texteditor geöffnet und als String analysiert werden. – TRiG

Verwandte Themen