Ist das erste Topic, dass ich hier eröffne, also hallo erstmal
Ich habe ein kleines Programm geschrieben, dass mir den Erwartungswert einer ebstimmten Situation beim Pokern ausrechnet. Der User soll dabei Eingaben über die Konsole machen und eine Ausgabe auf der Konsole sehen.
Wenn ich das ganze in Eclipse laufen lasse, gibt es keine Probleme. Wenn ich es als jar verpacke, passiert bei einem Doppelklich einfach garnichts. Hier mal der Source Code:
In der Jar befindet sich ein package, in dem alle Klassen sind.
Das Manifest:
Manifest-Version: 1.0
Main-Class: Alles.RiverEVProgramm
Woran könnte das Problem liegen?
Ich habe ein kleines Programm geschrieben, dass mir den Erwartungswert einer ebstimmten Situation beim Pokern ausrechnet. Der User soll dabei Eingaben über die Konsole machen und eine Ausgabe auf der Konsole sehen.
Wenn ich das ganze in Eclipse laufen lasse, gibt es keine Probleme. Wenn ich es als jar verpacke, passiert bei einem Doppelklich einfach garnichts. Hier mal der Source Code:
Code:
package Alles;
public class RiverEVProgramm {
public static void main(String[] args) {
InputOutput.willkommen();
InputOutput.potMethode();
InputOutput.callVorneMethode();
InputOutput.callHintenMethode();
InputOutput.valueCRMethode();
InputOutput.gtoFrage();
InputOutput.gtoEintscheidungsMethode();
if(Berechnung.getGTOBoolean()){
Berechnung.gtoBluffCombos(Berechnung.getPot(), Berechnung.getValueCR());
}
else{
InputOutput.bluffCRMethode();
}
Berechnung.evBFMethode(Berechnung.getPot(), Berechnung.getValueCR(), Berechnung.getBluffCR(), Berechnung.getCallVorne(), Berechnung.getCallHinten());
Berechnung.evBCMethode(Berechnung.getPot(), Berechnung.getValueCR(), Berechnung.getBluffCR(), Berechnung.getCallVorne(), Berechnung.getCallHinten());
System.out.println("Der Erwartungswert eines B/F entspricht ungefähr " + Berechnung.getEvBF()+ "BB pro Hand");
System.out.println("Der Erwartungswert eines B/C entspricht ungefähr " + Berechnung.getEvBC()+"BB pro Hand");
while(true){
int i=3;
System.out.println(i);
}
}
}
Code:
package Alles;
import java.io.*;
public class InputOutput {
//Erste Message im Programm
public static void willkommen() {
System.out
.println("Willkommen bei RiverEV!\ndieses Programm berechnet den Erwartungswert einer Value-Bet");
}
// Frage ob GTO Bluff-Frequenz benutzt wrden soll
public static void gtoFrage(){
System.out.print("Möchten sie eine balancierte Bluff-Frequenz für ihren Gegner annehmen?\nSchreiben sie bitte: \"Ja\" bzw. \"nein\":");
}
// Methode, die Usereingaben einliest und den GTO Frequenz boolean setzt
public static void gtoEintscheidungsMethode() {
BufferedReader gtoReader = new BufferedReader(new InputStreamReader(
System.in));
String gtoEntscheidung = null;
try {
gtoEntscheidung = gtoReader.readLine();
} catch (IOException ioe) {
System.out.println("Fehler bei der Eingabe!");
System.exit(1);
}
if (gtoEntscheidung.equals("ja") || gtoEntscheidung.equals("JA")
|| gtoEntscheidung.equals("Ja") || gtoEntscheidung.equals("jA")) {
Berechnung.setGTOBoolean(true);
System.out.println("Sie haben sich dafür entschieden ihrem Gegner automatisch eine balancierte Bluff-Frequenz zu geben!");
} else if (gtoEntscheidung.equals("nein")
|| gtoEntscheidung.equals("NEIN")
|| gtoEntscheidung.equals("Nein")) {
Berechnung.setGTOBoolean(false);
System.out
.println("Sie haben sich dagegen entschieden, ihrem Gegner eine balancierte Bluff-Frequenz zu geben.\nSie können die Kombinationen seiner Bluff-Hände nun manuell bestimmen!");
} else {
System.out.print("Ungültige Eingabe, bitte Eingabe wiederholen: ");
gtoEintscheidungsMethode();
}
}
// Methode zum Setzen der Potgröße
public static void potMethode(){
System.out.print("Geben Sie Bitte die Potgröße vor ihrer Bet in BB an:");
BufferedReader potReader = new BufferedReader(new InputStreamReader(
System.in));
int pot =0;
String potSTR=null;
try {
potSTR = potReader.readLine();
} catch (IOException ioe) {
System.out.println("Fehler bei der Eingabe!");
System.exit(1);}
try {
pot = Integer.parseInt(potSTR);
} catch (Exception e) {
System.out.println("Bitte geben sie eine Zahl ein!");
potMethode();
}
if (pot<0){
System.out.println("Bitte geben Sie eine positive Zahl ein");
potMethode();
}
else
Berechnung.setPot(pot);
}
//Methode zur bestimmung der CC RAnge, gegen die wir vorne sind
public static void callVorneMethode(){
System.out.print("Geben Sie Bitte die Handkombinationen der Gegnerischen Calling-Range ein, gegen die Sie vorne sind:");
BufferedReader potReader = new BufferedReader(new InputStreamReader(
System.in));
int callVorne =0;
String callVorneSTR=null;
try {
callVorneSTR = potReader.readLine();
} catch (IOException ioe) {
System.out.println("Fehler bei der Eingabe!");
System.exit(1);}
try {
callVorne = Integer.parseInt(callVorneSTR);
} catch (Exception e) {
System.out.println("Bitte geben sie eine Zahl ein!");
callVorneMethode();
}
if (callVorne<0){
System.out.println("Bitte geben Sie eine positive Zahl ein");
callVorneMethode();
}
else
Berechnung.setCallVorne(callVorne);
}
//Methode zur bestimmung der CC RAnge, gegen die wir hinten sind
public static void callHintenMethode(){
System.out.print("Geben Sie Bitte die Handkombinationen der Gegnerischen Calling-Range ein, gegen die Sie hinten sind:");
BufferedReader potReader = new BufferedReader(new InputStreamReader(
System.in));
int callHinten =0;
String callHintenSTR=null;
try {
callHintenSTR = potReader.readLine();
} catch (IOException ioe) {
System.out.println("Fehler bei der Eingabe!");
System.exit(1);}
try {
callHinten = Integer.parseInt(callHintenSTR);
} catch (Exception e) {
System.out.println("Bitte geben sie eine Zahl ein!");
callHintenMethode();
}
if (callHinten<0){
System.out.println("Bitte geben Sie eine positive Zahl ein");
callHintenMethode();
}
else
Berechnung.setCallHinten(callHinten);
}
//Methode zur bestimmung der C/R Combos, gegen die wir hinten sind
public static void valueCRMethode(){
System.out.print("Geben Sie Bitte die Handkombinationen der Gegnerischen Value-C/R Range ein:");
BufferedReader potReader = new BufferedReader(new InputStreamReader(
System.in));
int valueCR =0;
String valueCRSTR=null;
try {
valueCRSTR = potReader.readLine();
} catch (IOException ioe) {
System.out.println("Fehler bei der Eingabe!");
System.exit(1);}
try {
valueCR = Integer.parseInt(valueCRSTR);
} catch (Exception e) {
System.out.println("Bitte geben sie eine Zahl ein!");
valueCRMethode();
}
if (valueCR<0){
System.out.println("Bitte geben Sie eine positive Zahl ein");
valueCRMethode();
}
else
Berechnung.setValueCR(valueCR);
}
//Methode zur manuellen Eingabe der Bluff CR Combos. Eine Methode zum Berechnen der GTO Bluff Combos befindet sich in der Berechnung Klasse
public static void bluffCRMethode(){
System.out.print("Geben Sie Bitte die Handkombinationen der Gegnerischen Bluff-C/R Range ein:");
BufferedReader potReader = new BufferedReader(new InputStreamReader(
System.in));
int bluffCR =0;
String bluffCRSTR=null;
try {
bluffCRSTR = potReader.readLine();
} catch (IOException ioe) {
System.out.println("Fehler bei der Eingabe!");
System.exit(1);}
try {
bluffCR = Integer.parseInt(bluffCRSTR);
} catch (Exception e) {
System.out.println("Bitte geben sie eine Zahl ein!");
bluffCRMethode();
}
if (bluffCR<0){
System.out.println("Bitte geben Sie eine positive Zahl ein");
bluffCRMethode();
}
else
Berechnung.setBluffCR(bluffCR);
}
}
Code:
package Alles;
public class Berechnung {
private static double bluffCR=0; //ANzahl der Bluff CR Combos
private static double valueCR=0; //Anzahl der Value CR Combos, jede besser als unsere Hand
private static double callVorne=0; //Anzahl Call Combos, gegen die wir vorne sind
private static double callHinten=0; //Anzahl Call Combos gegen die wir hinten sind
private static double pot=0; //Potgröße vor der Bet
private static double evBF=0; // EX SD EV des B/F
private static double evBC=0; // EX SD EV des B/C
private static boolean gtoBoolean=false; //Boolean, ob die GTO Bluffing Frequenz gewählt wurde
//setter und getter
public static void setBluffCR(double bluffCR){
Berechnung.bluffCR=(double)bluffCR;
}
public static double getBluffCR(){
return Berechnung.bluffCR;
}
public static void setValueCR(int valueCR){
Berechnung.valueCR = (double)valueCR;
}
public static double getValueCR(){
return Berechnung.valueCR;
}
public static void setCallVorne(int callVorne){
Berechnung.callVorne=callVorne;
}
public static double getCallVorne(){
return Berechnung.callVorne;
}
public static void setCallHinten(int callHinten){
Berechnung.callHinten=callHinten;
}
public static double getCallHinten(){
return Berechnung.callHinten;
}
public static void setPot(int pot){
Berechnung.pot=pot;
}
public static double getPot(){
return Berechnung.pot;
}
public static void setGTOBoolean(boolean gtoBoolean){
Berechnung.gtoBoolean = gtoBoolean;
}
public static boolean getGTOBoolean(){
return Berechnung.gtoBoolean;
}
public static double getEvBF() {
return evBF;
}
public static void setEvBF(double evBF) {
Berechnung.evBF = evBF;
}
public static double getEvBC() {
return evBC;
}
public static void setEvBC(double evBC) {
Berechnung.evBC = evBC;
}
public static void gtoBluffCombos(double pot, double valueCR){
double bluffCR=0;
bluffCR=(valueCR/(pot+4));
Berechnung.setBluffCR(bluffCR);
}
public static void evBFMethode(double pot, double valueCR, double bluffCR, double callVorne, double callHinten){
double evBF=0;
double combos=(valueCR+bluffCR+callVorne+callHinten);
evBF=(bluffCR/combos)*(-1)*(pot+1)+(valueCR/combos)*(-1)+(callVorne/combos)+(callHinten/combos)*(-1);
setEvBF(evBF);
}
public static void evBCMethode(double pot, double valueCR, double bluffCR, double callVorne, double callHinten){
double evBC=0;
double combos=(valueCR+bluffCR+callVorne+callHinten);
evBC=(bluffCR/combos)*(2)+(valueCR/combos)*(-2)+(callVorne/combos)+(callHinten/combos)*(-1);
setEvBC(evBC);
}
}
In der Jar befindet sich ein package, in dem alle Klassen sind.
Das Manifest:
Manifest-Version: 1.0
Main-Class: Alles.RiverEVProgramm
Woran könnte das Problem liegen?