Integer Wert wird nicht übernommen

Sultaex

Neues Mitglied
Ich habe die Aufgabe für ein Schulprojekt das Spiel 17 und 4 in vereinfachter Variante in Java zu realisieren. Das Spiel an sich habe ich fertig, allerdings muss es möglich sein die Rundenlänge vor dem Spiel festzulegen. Dies wollte ich mit einem jOption.Pane.showInputDialog machen, welcher mir einen String ausgibt den ich mit int RundenAnz = Integer.parseInt(RundenFrage) in ein Integer konvertiere. Wenn ich mir nun den Wert mit System.out.println(RundenAnz) anzeigen lasse so ist dieser der korrekte eingegebene Wert. Wenn ich aber später im Programm diesen Wert wieder abrufen möchte gibt es mir den Wert der am Anfang des Programms als private int RundenAnz = x; festgelegt hatte.
Die Variablen habe ich am Anfang festgelegt:
Java:
public class SiebzehnundVier extends JFrame {
  ...
  private int runden = 0;
  private String RundenFrage;
  private int RundenAnz = 0;
  ...
}

Die Abfrage der Runden hier:
Java:
public SiebzehnundVier() {
    // Frame-Initialisierung
    super();
    RundenFrage = JOptionPane.showInputDialog(null, "Wie viele Runden sollen gespielt werden?");
    int RundenAnz = Integer.parseInt(RundenFrage);
    System.out.println(RundenAnz);
    ...
}

Das Problem tritt hier auf:
Java:
public void siegbedingung(){                             
    System.out.println(RundenAnz);        // Hier wird wieder der Anfangswert angegeben
    if(runden == RundenAnz) {
    ...
    }
}

Hat jemand eine Ahnung woran das liegen könnte?
 
int RundenAnz = Integer.parseInt(RundenFrage);

Du erstellst hier durch das vorangestellte "int" eine neue lokale Variable RundenAnz, die die Instanzvariable verdeckt.

Eine Variable wird immer mit Typ Name deklariert. Lass den Typ weg, dann wird eine Zuweisung an die vorhandene Instanzvariable draus.

Noch was: In Java werden per Konvention Variablenname immer mit einem Kleinbuchstaben begonnen: RundenAnz => rundenAnz.

Klassennamen beginnen mit einem Großbuchstaben.
 
Außerdem sind Methoden "Aktionen", es wird etwas getan. Daher enthalten diese typischer weise ein Verb. Statt "siegbedingung" wären Benennungen wie "ueberpruefeSieg", "werteFinaleAus" oder "istEndeErreicht" (mit boolean Rückgabewert) sprechender.
 

Zurück
Oben