ich habe ein kleines Programm geschrieben, wo man verschiedene Schwierigkeiten wählen kann.
Da ich dies alles mit Absicht sehr ausführlich schreibe, habe ich manche Codes doppelt etc.. (Also nicht wundern).
Nun funktioniert alles in dem Schwierigkeitsgrad Einfach wunderbar.
Jedoch wenn ich auf den Schwierigkeitsgrad Mittel gehen möchte, wird das Programm nicht weiter ausgeführt.
Anbei seht ihr den Code.
Code:
package erstesSpiel;
import javax.swing.JOptionPane;
import org.omg.CORBA.TIMEOUT;
public class erstesSpiel {
private static final String String = null;
public static void main(String[] args) {
int startergeldEinfach = 10;
double startergeldMittel = 5;
double startergeldSchwer = 2;
JOptionPane.showMessageDialog(null, "Herzlich-Willkommen bei meinem kleinen Spiel.");
String input = JOptionPane.showInputDialog(null, "Du befindest dich nun in dem Startmenü\n\n"
+ "Wähle\n\n 1 für Spiel starten\n2 für Spielbeschreibung\n" + "3 für die Credits.\n\n");
if (input.equals("starten")) {
String schwierigkeit = JOptionPane.showInputDialog(null,
"Bitte wäle nun deinen Schwierigkeitsgrad\n\n" + "Einfach\n" + "Mittel\n" + "Schwer\n");
while (schwierigkeit.equals("Einfach")) {
double startergeld = 10;
String einfach = JOptionPane.showInputDialog(null,
"Du hast den Schwierigkeitsgrad Einfach gewählt.\n" + "Dein Startkapital beträgt "
+ startergeldEinfach + " Credit´s.\n" + "in was möchtest du investieren?\n"
+ "Dir stehen folgende Investitionen zur Verfügung:\n" + "\n" + "Automobilbranche\n"
+ "IT-Branche\n" + "Pharmabranche\n" + "Musikindustrie\n" + "Uhrenindustrie\n"
+ "Illegale geschäfte.");
if (einfach.equals("Automobilbranche")) {
JOptionPane.showMessageDialog(null, "Du hast in die Automobilbranche investiert.\n\n"
+ "Du erhältst zu deinem Kapital einen Bonus von einem Credit.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + ++startergeldEinfach);
}
if (einfach.equals("IT-Branche")) {
JOptionPane.showMessageDialog(null,
"Du hast in die IT-Branche investiert. Dein Kapital erhöht sich um zwei Credits.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + (startergeldEinfach + 2));
++startergeldEinfach;
++startergeldEinfach;
}
if (einfach.equals("Pharmabranche")) {
JOptionPane.showMessageDialog(null,
"Du hast in die Pharmabranche investiert. Dein Kapital erhöht sich um drei Credits.");
JOptionPane.showMessageDialog(null, "Dein kapital beträgt nun: " + (startergeldEinfach + 3));
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
}
if (einfach.equals("Musikindustrie")) {
JOptionPane.showMessageDialog(null,
"Du hast in die Musikindustrie investiert. Dein Kapital erhöht sich um vier Credits.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + (startergeldEinfach + 4));
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
}
if (einfach.equals("Uhrenindustrie")) {
JOptionPane.showMessageDialog(null,
"Du hast in die Uhrenindustrie investiert. Dein Kapital erhöht sich um 5 Credits.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + (startergeldEinfach + 5));
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
}
if (einfach.equals("Illegale Geschäfte")) {
JOptionPane.showMessageDialog(null,
"Du hast in illegale Geschäfte investiert. Dein Kapital erhöht sich um 6 Credits.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + (startergeldEinfach + 6));
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
++startergeldEinfach;
}
else {
JOptionPane.showMessageDialog(null,
"Bitte wähle eins der zur Verfügung stehenden Investitionen aus.");
}
while (schwierigkeit.equals("Mittel")) {
String mittel = JOptionPane.showInputDialog(null,
"Du hast den Schwierigkeitsgrad Einfach gewählt.\n" + "Dein Startkapital beträgt "
+ startergeldMittel + " Credit´s.\n" + "in was möchtest du investieren?\n"
+ "Dir stehen folgende Investitionen zur Verfügung:\n" + "\n" + "Automobilbranche\n"
+ "IT-Branche\n" + "Pharmabranche\n" + "Musikindustrie\n" + "Uhrenindustrie\n"
+ "Illegale geschäfte.");
if (mittel.equals("Automobilbranche")) {
JOptionPane.showMessageDialog(null, "Du hast in die Automobilbranche investiert.\n\n"
+ "Du erhältst zu deinem Kapital einen Bonus von einem Credit.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + ++startergeldMittel);
}
if (mittel.equals("IT-Branche")) {
JOptionPane.showMessageDialog(null,
"Du hast in die IT-Branche investiert. Dein Kapital erhöht sich um zwei Credits.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + (startergeldMittel + 2));
++startergeldMittel;
++startergeldMittel;
}
if (mittel.equals("Pharmabranche")) {
JOptionPane.showMessageDialog(null,
"Du hast in die Pharmabranche investiert. Dein Kapital erhöht sich um drei Credits.");
JOptionPane.showMessageDialog(null, "Dein kapital beträgt nun: " + (startergeldMittel + 3));
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
}
if (mittel.equals("Musikindustrie")) {
JOptionPane.showMessageDialog(null,
"Du hast in die Musikindustrie investiert. Dein Kapital erhöht sich um vier Credits.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + (startergeldMittel + 4));
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
}
if (mittel.equals("Uhrenindustrie")) {
JOptionPane.showMessageDialog(null,
"Du hast in die Uhrenindustrie investiert. Dein Kapital erhöht sich um 5 Credits.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + (startergeldMittel + 5));
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
}
if (mittel.equals("Illegale Geschäfte")) {
JOptionPane.showMessageDialog(null,
"Du hast in illegale Geschäfte investiert. Dein Kapital erhöht sich um 6 Credits.");
JOptionPane.showMessageDialog(null, "Dein Kapital beträgt nun: " + (startergeldMittel + 6));
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
++startergeldMittel;
}
else {
JOptionPane.showMessageDialog(null,
"Bitte wähle eins der zur Verfügung stehenden Investitionen aus.");
}
}
}
}
}
}
Die Schleife für Einfach beginnt in Zeile 25 und endet in Zeile 187.
Die Schleife für Mittel beginnt in Zeile 106 und endet in Zeile 185.
Die Schleife für Mittel befindet sich also in der Schleife für Einfach. Die Schleife für Einfach wird aber nicht ausgeführt wenn Mittel ausgewählt wurde.
Ich würde dir empfehlen jetzt deinen Code aufzuräumen und den doppelten Code so weit wie möglich zu entfernen. Das wird später nur mehr Arbeit und ist eine unnötig große Fehlerquelle.
Da ich dies alles mit Absicht sehr ausführlich schreibe, habe ich manche Codes doppelt etc.. (Also nicht wundern).
Ich würde das gar nicht erst machen, es ist nämlich nicht ausführlich sondern unnötig und redundant. Gewöhn dir so einen Code gar nicht erst an. Um einen Code "ausführlich" und leserlich zu schreiben, kann man immer noch Kommentare hinzufügen.
Ich würde das gar nicht erst machen, es ist nämlich nicht ausführlich sondern unnötig und redundant. Gewöhn dir so einen Code gar nicht erst an. Um einen Code "ausführlich" und leserlich zu schreiben, kann man immer noch Kommentare hinzufügen.
Das mite dem startergeldMittel=+4; hatte ich zuerst. jedoch wurde dies in der while schleife nicht erhöht.
Dann hattest du wahrscheinlich "startergeldMittel = 4;", dann kann sich da auch nichts erhöhen. Bei "startergeldMittel += 4;" oder länger "startergeldMittel = startergeldMittel + 4;" muss es sich erhöhen.
Nur "startergeldMittel = startergeldMittel + 4;" und nicht "double startergeldMittel = startergeldMittel + 4;". Beim zweiten deklarierst du sie dann nämlich wirklich doppelt. Aber "startergeldMittel += 4;" muss auch funktionieren und ist etwas besser zu lesen.
So viele if-Anweisungen
Nimm doch bitte enums und verwende diese, mithilfe eines switch-cases.
Deine perfomance droppt, es ist unleserlich und generell schlecht mit vielen if's zu programmieren.
Ah btw. Klassennamen schreibt man groß.
Enum Beispiel:
Code:
public enum Entscheidung {
STARTEN("Starten"),
EINFACH("Einfach"),
AUTOMOBILBRANCHE("Automobilbranche"); // usw.
private final String text;
private Entscheidung(final String text) {
this.text = text;
}
public boolean equalsName(String otherText) { // optional, oder du ueberschreibst die equals Methode selbst
return (otherText == null) ? false : text.equals(otherText);
}
@Override
public String toString() {
return text;
}
}
Man sollte aber generell mit Numerischen Zahlen anstatt von Strings zu arbeiten.
Du kannst auch eine weitere Klasse erstellen, welche deinen Input checkt und dementsprechen das enstprechende enum typ/wert zurück liefert.
Beispiel:
Code:
public class EntscheidungChecker {
public Entscheidung checkEntscheidung(String input) {
if(input.isEmpty())
return Entscheidung.EMPTY;
String[] splittedInput = input.split(" ");
switch(splittedInput[0]) {
case "Starten":
return Entscheidung.STARTEN;
case "Einfach":
return Entscheidung.EINFACH;
case "Automobilbranche":
return Entscheidung.AUTOMOBILBRANCHE;
}
return Entscheidung.FEHLER; // sowas ist immer gut, falls der user was dummes eingibt
}
}
Das Enum sieht dann so aus:
Code:
public enum Entscheidung {
STARTEN, EINFACH, AUTOMOBILBRANCHE, FEHLER, EMPTY;
}
In der Verwendung:
Code:
Entscheidung entscheidung = entscheidungCheck.checkEntscheidung(input);
switch(entscheidung) {
case STARTEN:
// dein code
break;
case EINFACH:
// dein code
break;
case AUTOMOBILBRANCHE:
// dein code
break;
case FEHLER:
// dein code
break;
}
[S] Coder für ein kleines Programm 08/26/2015 - Coders Trading - 0 Replies Das Programm soll Daten aus 2-3 Textdateien zufällig auswählen und mir anschließend anzeigen.
Meldet euch bitte nur per PN bei mir! Dort besprechen wir dann auch die Bezahlung.
[c++] kleines Programm 01/13/2014 - C/C++ - 10 Replies Hallo liebe E-Pvp- Community,
da ich mir ein wenig c++ aneignen wollte, habe ich mir vorgenommen mit einem kleinen Programm eine Datenbank auszulesen. Nun taucht aber bei mir ein Fehler auf, den ich nicht selbst lösen kann und weis auch nicht wie.
Ich bin gerade dabei erst einmal eine Verbindung zur Datenbank aufzubauen.
Zum Programm (mit VS2013 geschreiben):
- Konsolenanwendung
- mysql.h wurde schon im Includeverzeichniss hinzugefügt
- Lib wurde auch schon im Bibliotheksverzeichniss...
[S] Kleines Programm 07/23/2013 - elite*gold Trading - 3 Replies Hallo,
suche ein Programm das folgendes machen soll:
Es soll 2 Buttons geben.
Einmal View Page-->Öffnen der Seite Pietsmiet.tv
Und einmal Start Zarfirbel Bot-->Enter drücken--> pietsmiet.tv schreiben --> Enter drücken, das ganze in einem Abstand von 3-5 Minuten.
Das ganze soll dan Zarfirbel-Bot heißen.
Evtl. Als Design das PietSmiet Zeichen.
Zahle bis zu 100 E*G.
Ich möchte die Rechte an dem Bot haben.
[S]Kleines VB Programm 09/18/2012 - Coders Trading - 2 Replies Hallo,
Ich suche ein kleines VB Programm.
Undzwar brauche ich einen in VB intigrierten Browser wo ich mit 1 Klick die IP ändern und die Browser Cache leeren kann.
Hoffe mir kann da jemand weiterhelfen.
Sollte alles Funktionieren würde ich auch 60-70e*Gold dafür zahlen..