Datentypen enum static Chaos (blutiger anfänger)

tschawa

Neues Mitglied
hallo,
ich möchte als allererste kleine progr.übung ein kleines programm zur auszählung von go-spielbrett programmieren. noch stehe ich gaaanz am anfang. ich dachte mir, den Feldzustand könnte ich doch ganz gut als enum definieren (leer, schwarz, weiss), aber der enum wird ja als static übersetzt und dadurch bin ich in eine sackgasse geraten... ich möchte für jedes spielfeld (n x n) eine Instanz "Feld" erzeugen und dort in einer Klassenvariablen den Feldzustand mit Datentyp enum speichern. leider geht das nur als static, was bedeutet, dass ich genau einen zustand für alle n x n felder habe 🙁. ich möchte eigentlich den aufwand für eine kompliziertere enum-klasse nicht treiben - warum auch? ich stelle mal den code hier rein und wenn jemand lust hat mir n'en tipp zu geben, würde ich mich freuen. also hier der code: über wo static steht gehört ein grosses ? dazu!
es sind 3 klassen: feld, brett, rungo
ist so übersetzbar, aber taugt natürlich nichts ... grrrr.

feld.java:
Java:
package go;
public class feld {
 
   protected enum steintyp {LEER, SCHWARZ, WEISS}

   private int zeile;
   private int spalte;
   private static steintyp stein_auf_feld; // das gibt's ja dann nur einmal. falsch!

   protected feld(int inzeile, int inspalte) {
       this.zeile=inzeile;
       this.spalte=inspalte;
       this.stein_auf_feld=steintyp.LEER;
   }

   protected static steintyp getSteintyp() {
       //return steintyp.valueOf(steintyp.class, "SCHWARZ");
       return stein_auf_feld;
   }
    
   protected static void setSteintyp(steintyp welcher_steintyp) {
       stein_auf_feld = welcher_steintyp;
   }
}

brett.java:
Java:
package go;

import go.feld.steintyp;

public class brett {

   protected brett() {
       feld f = new feld(1,1);
       feld.setSteintyp(steintyp.WEISS);
       steintyp styp = feld.getSteintyp();
       System.out.println(styp);
   }
}

rungo.java:
package go;
public class rungo {
   public static void main(String[] args) {
       brett b = new brett();
   }
}

p.s.: wie kann man hier eigentlich den code als fixed size formatieren?
 
Zuletzt bearbeitet von einem Moderator:
ich möchte als allererste kleine progr.übung ein kleines programm zur auszählung von go-spielbrett programmieren. noch stehe ich gaaanz am anfang. ich dachte mir, den Feldzustand könnte ich doch ganz gut als enum definieren (leer, schwarz, weiss), aber der enum wird ja als static übersetzt und dadurch bin ich in eine sackgasse geraten... ich möchte für jedes spielfeld (n x n) eine Instanz "Feld" erzeugen und dort in einer Klassenvariablen den Feldzustand mit Datentyp enum speichern. leider geht das nur als static, was bedeutet, dass ich genau einen zustand für alle n x n felder habe 🙁. ich möchte eigentlich den aufwand für eine kompliziertere enum-klasse nicht treiben - warum auch? ich stelle mal den code hier rein und wenn jemand lust hat mir n'en tipp zu geben, würde ich mich freuen. also hier der code: über wo static steht gehört ein grosses ? dazu!
Irgendwas hast du da missverstanden - die Variabel muss keineswegs static sein, nimm einfach das static weg und es funktioniert wunderbar 😉
 
danke danke! na-ja, auf dem schraubenschlüssel war ich ja gestern schon, aber dieser wiki-editor verrät seine formatierungscodes anscheinend nicht gerade so jedem...? eine erklärung zu den codes habe ich nicht gefunden. die wäre eigentlich hier als link hilfreich. (hmm, hinter dem button einfügen ... steckt es also ...)
mein entscheidender fehler war, dass ich die feld-Methoden in der Klasse brett mit dem Klassennamen aufgerufen habe. Damit wurden statische Methoden und dann auch eine statische Variable gefordert. Auch ein Irrtum den ich wahrscheinlich durch die kleinschreibung der klasse feld provoziert habe. bin einen schritt weiter danke.
 
Zuletzt bearbeitet:
danke danke! na-ja, auf dem schraubenschlüssel war ich ja gestern schon, aber dieser wiki-editor verrät seine formatierungscodes anscheinend nicht gerade so jedem...? eine erklärung zu den codes habe ich nicht gefunden. die wäre eigentlich hier als link hilfreich. (hmm, hinter dem button einfügen ... steckt es also ...)
Etwas versteckt ist der Hilfe Link schon 😕 .. https://www.java-forum.org/help/bb-codes
(zu finden ganz unten neben dem Impressum und Kontakt Link)
 
Anm: "protected" funktioniert in Java etwas anders als du es anscheinend gewohnt bist. "protected" bedeute in Java NICHT "nur im Package sichtbar". Wenn man das erreichen will, verwendet man einfach gar kein Keyword. Schlage es mal nach für genauere Infos

Du machst es dir da selbst etwas zu kompliziert. Das enum mag ja static sein, aber die Variablen, welche das Enum speichern, müssen das nicht sein.

Entferne einfach die static Keywords vor "stein_auf_feld" und dessen Zugriffsmethoden. Die Variable ist ja eine Eigenschaft der Instanz und nicht der Klasse.
 

Neue Themen


Zurück
Oben