Frage zu meinem Java Programm

Status
Für weitere Antworten geschlossen.
G

George03

Gast
Ich habe eine Frage zu meinem Programm. Wenn ich es ausführe dann kann ich nur von einer Seite 1-3 Strings nehmen, wenn der Computer etwas wegnehmen soll dann geht das nicht, es steht nur das er etwas weggenommen hat. Beim zweiten mal kann ich nicht mehr von der anderen Seite etwas wegnehmen. Nur von der Seite wo ich angefangen habe funktioniert es und da nimmt er immer eins weniger weg als ich eingegeben habe. Also wenn ich 3 eingebe dann nimmt er nur 2 weg.

Hier ist der Code:

http://pastebin.com/vMa2tH01

Code:
package projekt_3;

public class Projekt_3 {

	String player = "";
	String spielfeld = "";

	String platzEins = "M", platzZwei = "M", platzDrei = "M", platzVier = "M",
			platzFuenf = "M", platzSechs = "M", platzSieben = "M",
			platzAcht = "M", platzNeun = "M", platzZehn = "M";

	int anzahlHuman;
	char seiteHuman;
	int anzahlComputer;
	char seiteComputer;

        int norbertZaehler;
        
	public void platzVergabe() {

                norbertZaehler = (int) (Math.random() * 10 + 1);

		if (norbertZaehler == 1) {
			platzEins = "O";
		} else if (norbertZaehler == 2) {
			platzZwei = "O";
		} else if (norbertZaehler == 3) {
			platzDrei = "O";
		} else if (norbertZaehler == 4) {
			platzVier = "O";
		} else if (norbertZaehler == 5) {
			platzFuenf = "O";
		} else if (norbertZaehler == 6) {
			platzSechs = "O";
		} else if (norbertZaehler == 7) {
			platzSieben = "O";
		} else if (norbertZaehler == 8) {
			platzAcht = "O";
		} else if (norbertZaehler == 9) {
			platzNeun = "O";
		} else if (norbertZaehler == 10) {
			platzZehn = "O";
		}

		System.out.println("M = Mininon" + '\n' + "O = Norbert" + '\n'
		+ "Die folgenden Minions stehen zur Auswahl:" + '\n' + platzEins + platzZwei
		+ platzDrei + platzVier + platzFuenf + platzSechs + platzSieben
		+ platzAcht + platzNeun + platzZehn + '\n');

		spielfeld = platzEins + platzZwei + platzDrei + platzVier + platzFuenf
		+ platzSechs + platzSieben + platzAcht + platzNeun + platzZehn;

		werBeginnt();

	}
        
        public void zeigeSpielfeld() {
                String ergebnis;
 
                ergebnis = platzEins + platzZwei + platzDrei + platzVier + platzFuenf
                                + platzSechs + platzSieben + platzAcht + platzNeun + platzZehn;
 
                System.out.println(ergebnis);
        }

	public void werBeginnt() {

		int anfang = (int) (Math.random() * 2);

		if (anfang == 0) {
			player = "Computer";
			computerZug();
		} else if (anfang == 1) {
			player = "Human";
			menschZug();
		}
	}

	public void menschZug() {

		player = "Human";
		System.out.println("- DU BIST DRAN -" + '\n');

		System.out.println("Anzahl der Minions eingeben (max. 3): ");
		anzahlHuman = In.readInt();

		System.out.println("Seite eingeben (l/r): ");
		seiteHuman = In.readChar();

		entferneMinions();
                zeigeSpielfeld();
                computerZug();
	}

	public void computerZug() {

		player = "Computer";
		System.out.println("- COMPUTER IST DRAN -" + '\n');

		anzahlComputer = (int) (Math.random() * 3 + 1);
		System.out.println("Der Computer hat die Anzahl >>" + anzahlComputer
				+ "<< gewählt.");

		int seitenAbfrage = (int) (Math.random() * 2);

		if (seitenAbfrage == 0) {
			seiteComputer = 'r';
		} else {
			seiteComputer = 'l';
		}
		System.out.println("Der Computer hat die Seite  >>" + seiteComputer
		+ "<< gewählt.");

		entferneMinions();
                zeigeSpielfeld();
                menschZug();
	}

	public void entferneMinions() {
            
		if (player=="Computer") {
                    
                int anfangLinks = 0;
                int anfangRechts = 0;
                
                if (seiteHuman == 'l') {
               
                        for (int i = 0; i < 9; i++) {
 
                                if (i == 0 && platzEins == "-") {
                                        anfangLinks = 0;
                                } else if (i == 1 && platzZwei == "-") {
                                        anfangLinks = 1;
                                } else if (i == 2 && platzDrei == "-") {
                                        anfangLinks = 2;
                                } else if (i == 3 && platzVier == "-") {
                                        anfangLinks = 3;
                                } else if (i == 4 && platzFuenf == "-") {
                                        anfangLinks = 4;
                                } else if (i == 5 && platzSechs == "-") {
                                        anfangLinks = 5;
                                } else if (i == 6 && platzSieben == "-") {
                                        anfangLinks = 6;
                                } else if (i == 7 && platzAcht == "-") {
                                        anfangLinks = 7;
                                } else if (i == 8 && platzNeun == "-") {
                                        anfangLinks = 8;
                                } else if (i == 9 && platzEins == "-") {
                                        anfangLinks = 9;
                                }
                        }
 
                        for (int j = anfangLinks; j < anzahlHuman+anfangLinks; j++) {
                                if (j == 0) {
                                        if (platzEins == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzEins = "-";
                                        }
                                }
                                if (j == 1) {
                                        if (platzZwei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzZwei = "-";
                                        }
                                }
                                if (j == 2) {
                                        if (platzDrei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzDrei = "-";
                                        }
                                }
                                if (j == 3) {
                                        if (platzVier == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzVier = "-";
                                        }
                                }
                                if (j == 4) {
                                        if (platzFuenf == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzFuenf = "-";
                                        }
                                }
                                if (j == 5) {
                                        if (platzSechs == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzSechs = "-";
                                        }
                                }
                                if (j == 6) {
                                        if (platzSieben == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzSieben = "-";
                                        }
                                }
                                if (j == 7) {
                                        if (platzAcht == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzAcht = "-";
                                        }
                                }
                                if (j == 8) {
                                        if (platzNeun == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzNeun = "-";
                                        }
                                }
                                if (j == 9) {
                                        if (platzZehn == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzZehn = "-";
                                        }
                                }
                        }
                             
                }else {
                        
                        for (int i = 9; i > 0; i--) {
 
                                if (i == 0 && platzEins == "-") {
                                        anfangRechts = 9;
                                } else if (i == 1 && platzZwei == "-") {
                                        anfangRechts = 8;
                                } else if (i == 2 && platzDrei == "-") {
                                        anfangRechts = 7;
                                } else if (i == 3 && platzVier == "-") {
                                        anfangRechts = 6;
                                } else if (i == 4 && platzFuenf == "-") {
                                        anfangRechts = 5;
                                } else if (i == 5 && platzSechs == "-") {
                                        anfangRechts = 4;
                                } else if (i == 6 && platzSieben == "-") {
                                        anfangRechts = 3;
                                } else if (i == 7 && platzAcht == "-") {
                                        anfangRechts = 2;
                                } else if (i == 8 && platzNeun == "-") {
                                        anfangRechts = 1;
                                } else if (i == 9 && platzEins == "-") {
                                        anfangRechts = 0;
                                }
                        }
                        
                        for (int j = 9 - anfangRechts; j > 9 - anzahlHuman; j--) {
                                if (j == 0) {
                                        if (platzEins == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzEins = "-";
                                        }
                                }
                                if (j == 1) {
                                        if (platzZwei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzZwei = "-";
                                        }
                                }
                                if (j == 2) {
                                        if (platzDrei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzDrei = "-";
                                        }
                                }
                                if (j == 3) {
                                        if (platzVier == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzVier = "-";
                                        }
                                }
                                if (j == 4) {
                                        if (platzFuenf == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzFuenf = "-";
                                        }
                                }
                                if (j == 5) {
                                        if (platzSechs == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzSechs = "-";
                                        }
                                }
                                if (j == 6) {
                                        if (platzSieben == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzSieben = "-";
                                        }
                                }
                                if (j == 7) {
                                        if (platzAcht == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzAcht = "-";
                                        }
                                }
                                if (j == 8) {
                                        if (platzNeun == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzNeun = "-";
                                        }
                                }
 
                                if (j == 9) {
                                        if (platzZehn == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzZehn = "-";
                                        }
                                }
                        }
                }
                
		zeigeSpielfeld();		
                menschZug();
                                
		} else {
                    
		int anfangLinks = 0;
                int anfangRechts = 0;
 
                if (seiteComputer == 'r') {
               
                        for (int i = 0; i < 9; i++) {
 
                                if (i == 0 && platzEins == "-") {
                                        anfangLinks = 0;
                                } else if (i == 1 && platzZwei == "-") {
                                        anfangLinks = 1;
                                } else if (i == 2 && platzDrei == "-") {
                                        anfangLinks = 2;
                                } else if (i == 3 && platzVier == "-") {
                                        anfangLinks = 3;
                                } else if (i == 4 && platzFuenf == "-") {
                                        anfangLinks = 4;
                                } else if (i == 5 && platzSechs == "-") {
                                        anfangLinks = 5;
                                } else if (i == 6 && platzSieben == "-") {
                                        anfangLinks = 6;
                                } else if (i == 7 && platzAcht == "-") {
                                        anfangLinks = 7;
                                } else if (i == 8 && platzNeun == "-") {
                                        anfangLinks = 8;
                                } else if (i == 9 && platzEins == "-") {
                                        anfangLinks = 9;
                                }
                        }
 
                        for (int j = anfangLinks; j < anzahlComputer+anfangLinks; j++) {
                                if (j == 0) {
                                        if (platzEins == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzEins = "-";
                                        }
                                }
                                if (j == 1) {
                                        if (platzZwei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzZwei = "-";
                                        }
                                }
                                if (j == 2) {
                                        if (platzDrei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzDrei = "-";
                                        }
                                }
                                if (j == 3) {
                                        if (platzVier == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzVier = "-";
                                        }
                                }
                                if (j == 4) {
                                        if (platzFuenf == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzFuenf = "-";
                                        }
                                }
                                if (j == 5) {
                                        if (platzSechs == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzSechs = "-";
                                        }
                                }
                                if (j == 6) {
                                        if (platzSieben == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzSieben = "-";
                                        }
                                }
                                if (j == 7) {
                                        if (platzAcht == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzAcht = "-";
                                        }
                                }
                                if (j == 8) {
                                        if (platzNeun == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzNeun = "-";
                                        }
                                }
                                if (j == 9) {
                                        if (platzZehn == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzZehn = "-";
                                        }
                                }
                        }
                                              
                }else {
                                              
                        for (int i = 9; i > 0; i--) {
 
                                if (i == 0 && platzEins == "-") {
                                        anfangRechts = 9;
                                } else if (i == 1 && platzZwei == "-") {
                                        anfangRechts = 8;
                                } else if (i == 2 && platzDrei == "-") {
                                        anfangRechts = 7;
                                } else if (i == 3 && platzVier == "-") {
                                        anfangRechts = 6;
                                } else if (i == 4 && platzFuenf == "-") {
                                        anfangRechts = 5;
                                } else if (i == 5 && platzSechs == "-") {
                                        anfangRechts = 4;
                                } else if (i == 6 && platzSieben == "-") {
                                        anfangRechts = 3;
                                } else if (i == 7 && platzAcht == "-") {
                                        anfangRechts = 2;
                                } else if (i == 8 && platzNeun == "-") {
                                        anfangRechts = 1;
                                } else if (i == 9 && platzZehn == "-") {
                                        anfangRechts = 0;
                                }
                        }
                        
                        for (int j = 9 - anfangRechts; j > 9 - anzahlComputer; j--) {
                                if (j == 0) {
                                        if (platzEins == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzEins = "-";
                                        }
                                }
                                if (j == 1) {
                                        if (platzZwei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzZwei = "-";
                                        }
                                }
                                if (j == 2) {
                                        if (platzDrei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzDrei = "-";
                                        }
                                }
                                if (j == 3) {
                                        if (platzVier == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzVier = "-";
                                        }
                                }
                                if (j == 4) {
                                        if (platzFuenf == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzFuenf = "-";
                                        }
                                }
                                if (j == 5) {
                                        if (platzSechs == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzSechs = "-";
                                        }
                                }
                                if (j == 6) {
                                        if (platzSieben == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzSieben = "-";
                                        }
                                }
                                if (j == 7) {
                                        if (platzAcht == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzAcht = "-";
                                        }
                                }
                                if (j == 8) {
                                        if (platzNeun == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzNeun = "-";
                                        }
                                }
 
                                if (j == 9) {
                                        if (platzZehn == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzZehn = "-";
                                        }
                                }
                        }
                }

		zeigeSpielfeld();
                computerZug();
                
		}
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        }
        
	public static void main(String[] args) {
		Projekt_3 a = new Projekt_3();
		a.platzVergabe();
	}
}
 
Zuletzt bearbeitet:
Bitte
Code:
 nutzen.
 
Ich verstehe nicht mal die Frage.
Der Code ist auch brutal lang, mit Nutzung von Arrays / Switch-Case wäre es lesbarer.

Merke: Braucht man die gleiche Funktionalität an mehreren Stellen, lagere diese Funktionalität in einer Methode aus und rufe sie dann nach dem if /switch-case auf.

Code:
     if (j == 1) {
                                        if (platzZwei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzZwei = "-";
                                        }
                                }
                                if (j == 2) {
                                        if (platzDrei == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzDrei = "-";
                                        }
                                }
                                if (j == 3) {
                                        if (platzVier == "O") {
                                                System.out.println(player + "hat verloren");
                                                System.exit(0);
                                        } else {
                                                platzVier = "-";
                                        }
                                }

Das alles macht doch das Gleiche, wozu brauchst da überhaupt if ?
 
Zuletzt bearbeitet:
Mir gehts auch so ... ich kann nicht annähernd nachvollziehen worum es geht ... das ist echt ein brutaler Spaghetti-Code.

Was ist deine Eingabe? Was ist deine erwartete Ausgabe? Schonmal mit dem Debugger reingeschaut?
 
Der Fehler ist:

1. Der Computer kann keine "M" wegnehmen.
2. Human/Ich kann nur einmal links oder rechts 1-3 "M" wegnehmen
3. Wenn Human/Ich eine Seite ausgewählt hat dann kann ich nichts mehr von der anderen Seite wegnehmen
4. Wenn Human/Ich wieder etwas von der gleichen Seite wegnehme dann wird das was ich wegnehme -1 weggenommen, also wenn ich 3 wegnehmen will dann nimmt er nur 2 weg usw...

Hat einer eine Ahnung wo genau der Fehler liegen könnte?
 
Wäre einfach zu helfen wenn das Beispiel kompolierbar wäre, wo kommt den In.readInt(); bei der MenschZug-Methode her? Java-Standard ist das nicht oder?

Und die Frage ob du mal mit dem Debugger reingegangen bist, ist immernoch unbeantwortet. Aber wahrscheinlich nicht, sonst wäre die aufgefallen das alle deine String-Vergleiche falsch sind.

Und ansonsten wie schon angesprochen wurde ist da sehr viel Optimierungspotential drin, deine platzEins...platzZehn String wären als Array oder Liste besser aufgehoben etc.
 
Zuletzt bearbeitet:
Hat einer eine Ahnung wo genau der Fehler liegen könnte?

Du solltest lernen mit dem Debugger von deiner IDE umzugehen. Das hilft dir viel mehr, als wenn hier Leute dir den Fehler herausuchen. Außerdem: Lese dir unbedingt das Thema arrays durch. 95 Prozent deines Codes ist redundant, weshalb es sich auch schwer debuggen lässt.
 
Also das Programm soll 9 "M" haben und ein "O". Und der Computer und Ich dürfen immer 1-3 Figuren von Links oder Rechts nehmen. Der der am Ende das "O" ausgewählt hat verloren und das soll ausgegeben werden. Natürlich kann man sehen wo das "O" ist, es geht einfach nur darum das immer der derzeitige Stand angezeigt wird und man die "M" die weggenommen werden durch "-" ersetzt.
Ergänzung ()

Hier im Link ist die in.readInt

http://pastebin.com/2CGCBHq0
 
Es bleibt dabei das keiner deiner String-Vergleiche richtig ist, daher kann dein Programm nie den richtigen Anfang finden fürs ziehen.
 
Du bist ein ein bisschen Begriffsstutzig oder ? ;)

Was ist die Lösung für etwas was man falsch macht? Genau man macht es richtig. Schau dir bitte einmal an wie man in Java Strings vergleicht!
 
Da das hier sehr stark nach Hausaufgabe riecht und der TE bisher nicht das nötige Maß an Mitarbeit zeigt, schließe ich hier.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben