Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Tut mir Leid, ich begreife nicht, was das Programm machen soll.
Versuch mal, einen richtigen Programmablauf zu beschreiben und/oder den Code zu kommentieren.
Außerdem ist es auch nicht so nett, den Code nur zu linken, du kannst ihn auch direkt hier in Forum stellen.
Aufgefallen ist mir nur folgendes:
In der Methode readIntConsole arbeitest du in der globalen, statischen Variable anzstab. Die wird damit immer, wenn du ein int einließt, geändert. readIntConsole klingt mehr so, als würde da allgemein ein int von der Konsole gelesen, es wird aber in jedem Fall anzstab von der Konsole gelesen. Der Fehler ist das, glaub ich, nicht, aber es ist in jedem Fall unschön.
- du hast desöfteren
> BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
EIN derartiger Reader reicht, kannst du statisch in einer Variablen ablegen
- wenn erg nach Zug von B 0 ist, dann wird zwar erst B als Sieger festgelegt (Zeile 59ff),
aber danach wird immer noch die Siegesbedingung für A geprüft (73ff), und diese ignoriert, dass i bereits 1 ist, also das Spiel vorbei
die vielen Variablen sind eh unnötig verwirrend,
hier eine kürzere Variante:
Code:
public static void spieler()
{
char name = 0;
int eingabe = 0;
int erg = anzstab;
while (name == 0)
{
try
{
System.out.print("Spieler A --> " + erg + " Staebchen vorhanden - Nehmen Sie ");
eingabe = Integer.valueOf(br.readLine());
erg -= eingabe;
if (erg == 0)
{
name = 'A';
}
else
{
System.out.print("Spieler B --> " + erg + " Staebchen vorhanden - Nehmen Sie ");
eingabe = Integer.valueOf(br.readLine());
erg -= eingabe;
if (erg == 0)
{
name = 'B';
}
}
}
catch (NumberFormatException e)
{
System.out.println("Ungueltige Eingabe");
System.out.println("Bitte nur 1, 2 oder 3");
}
catch (IOException e)
{
System.out.println("Einlesefehler!");
}
}
System.out.println("Spieler " + name + " hat gewonnnen");
}
das Prüfen auf 1, 2, 3 geht mit einem if, bzw. du brauchst wohl eine while-Schleife, die solange einliest, bis das korrekte Ergebnis vorhanden ist,
außerdem noch prüfen, ob überhaupt genug Stäbchen vorhanden sind,
der Code wird also pro Spieler immer länger,
am besten schreibst du dir eine Methode
int eingabe = getInputFromPlayer("A",erg); // oder "B"
die sich um all das kümmert und am Ende die Eingabe zurückgibt,
dann muss in der while-Schleife nur noch auf Sieg doppelt getestet werden,
alles andere auch doppelt zu programmieren wäre unschön
- die Eingabe am Anfang wird bereits auf 10 Stäbchen geprüft, es kommt ne Fehlermeldung, aber das Spiel läuft danach normal weiter..,
da muss auch ne while-Schleife hin
--------
> Tut mir Leid, ich begreife nicht, was das Programm machen soll.