Ist ein enum hier richtig? Enum toString() Methode.

abc66

Top Contributor
Also ich habe folgende Klassen:
Java:
enum FigClazz {
	leer       ("0 leer             ", '0', 0f     ), 
	turm_b     ("r Turm schwarz     ", 'r', -1 / 6f),
	turm_w     ("R Turm weiß        ", 'R', +1 / 6f), 
	springer_b ("n Springer schwarz ", 'n', -2 / 6f),
	springer_w ("N Springer weiß    ", 'N', +2 / 6f), 
	laeufer_b  ("b Läufer schwarz   ", 'b', -3 / 6f),
	laeufer_w  ("B Läufer weiß      ", 'B', +3 / 6f), 
	dame_b     ("q Dame schwarz     ", 'q', -4 / 6f),
	dame_w     ("Q Dame weiß        ", 'Q', +4 / 6f), 
	koenig_b   ("k König schwarz    ", 'k', -5 / 6f),
	koenig_w   ("K König weiß       ", 'K', +5 / 6f), 
	bauer_b    ("p Bauer schwarz    ", 'p', -1f    ),
	bauer_w    ("P Bauer weiß       ", 'P', +1f    );

	String s;
	char c;
	float f;

	FigClazz(String s, char c, float f) {
		this.s = s;
		this.c = c;
		this.f = f;
	}

	static FigClazz getFicClazz(char c) {
		for (FigClazz f : FigClazz.values()) {
			if (f.c == c) {
				return f;
			}
		}
		return null;
	}
}

class Fig {
	ArrayList<BufferedImage> bis = new ArrayList<BufferedImage>();
	FigClazz fc;

	boolean search(BufferedImage b) {
		al: for (BufferedImage a : bis) {
			for (int k = 0; k < a.getHeight(); k++) {
				for (int l = 0; l < a.getWidth(); l++) {
					if (a.getRGB(l, k) != b.getRGB(l, k)) {
						continue al;
					}
				}
			}
			return true;
		}
		return false;
	}

	@Override
	public int hashCode() {
		return Objects.hash(fc.c);
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Fig other = (Fig) obj;
		return fc.c == other.fc.c;
	}

	@Override
	public String toString() {
		return String.format("Fig [bis=%s, type=%s, value=%s]", bis.size(), fc.c, fc.f);
	}
}

class Imgs {
	BufferedImage[][] bis = new BufferedImage[8][8];
}

und folgende Logik Methoden:
Java:
	static BufferedImage resize(BufferedImage img, int newW, int newH) {
		Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
		BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);

		Graphics2D g2d = dimg.createGraphics();
		g2d.drawImage(tmp, 0, 0, null);
		g2d.dispose();

		return dimg;
	}

	static Imgs getImgs(BufferedImage b, Loc l) {
		Imgs ret = new Imgs();
		BufferedImage a = b.getSubimage(l.r.x, l.r.y, l.r.width * 8, l.r.height * 8);
		a = resize(a, a.getWidth() / 2, a.getHeight() / 2);
		int n = a.getWidth() / 8;
		for (int i = 0; i < 8; i++) {
			for (int j = 0; j < 8; j++) {
				ret.bis[i][j] = a.getSubimage(j * n + 2, i * n + 2, n - 4, n - 4);
			}
		}
		return ret;
	}

	static HashMap<Character, Fig> getFigs(Imgs imgs) {
		HashMap<Character, Fig> ret = new HashMap<Character, Fig>();
		for (int i = 0; i < 8; i++) {
			for (int j = 0; j < 8; j++) {
				BufferedImage b = imgs.bis[i][j];
				Character chr = null;
				for (Fig fig : ret.values()) {
					if (fig.search(b)) {
						chr = fig.fc.c;
						break;
					}
				}
				if (chr == null) {
//					displayImg(imgs, i, j, 0, 0);
//					String[] sa = { 
//							"0 leer             ", "r Turm schwarz     ", "R Turm weiß        ",
//							"n Springer schwarz ", "N Springer weiß    ", "b Läufer schwarz   ", "B Läufer weiß      ",
//							"q Dame schwarz     ", "Q Dame weiß        ", "k König schwarz    ", "K König weiß       ",
//							"p Bauer schwarz    ", "P Bauer weiß       " };
					FigClazz[] values = FigClazz.values();
					chr = ((FigClazz) JOptionPane.showInputDialog(null, "Figur?", "Figur?",
							JOptionPane.QUESTION_MESSAGE, new ImageIcon(imgs.bis[i][j]), values, values[0])).c;
				}
				if (ret.containsKey(chr)) {
					ret.get(chr).bis.add(b);
				} else {
					Fig f = new Fig();
					f.bis.add(b);
					f.fc = FigClazz.getFicClazz(chr);
					ret.put(chr, f);
				}
			}
		}
		return ret;
	}

und folgende Main:
Java:
	public static void main(String[] args) throws AWTException, InterruptedException {
		BufferedImage b = /*...*/;

		Imgs imgs = getImgs(b, l);

		HashMap<Character, Fig> figs = getFigs(imgs);

		System.out.println(figs);
	}

Jetzt stellt sich mir natürlich die Frage, wie im Dropdown-Menue nicht "dame_b" usw. angezeigt wird, sonder der jeweilige String "q Dame schwarz" usw.
 

Ullenboom

Bekanntes Mitglied
Es wird die toString()-Methode auf dem enum aufgerufen. Die gibt standardmäßig den Namen vom enum-Element zurück. Überschreibe einfach toString(), so das s zurückgegeben wird -- und bitte andere Bezeichner wählen ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Best Practice Generics mit Enum Allgemeine Java-Themen 3
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
E Eigenen "Aufzählungstyp" erstellen - mit enum ? Allgemeine Java-Themen 18
I Enum gegen Enum tauschen Allgemeine Java-Themen 1
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
Neumi5694 Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
perlenfischer1984 TestNG - Enum testen Allgemeine Java-Themen 1
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
Q Enum Allgemeine Java-Themen 3
F Enum und Klasseninhalt Allgemeine Java-Themen 1
K Enum mit switch Allgemeine Java-Themen 2
D Enum Kategorien Allgemeine Java-Themen 10
C Datentypen Enum-Werte Bestanteil von anderem Enum Allgemeine Java-Themen 8
M Enum austauschbar machen Allgemeine Java-Themen 3
Rudolf State Pattern als Enum? Allgemeine Java-Themen 10
E Klassen Enum überladen od. austauschbar machen? Allgemeine Java-Themen 2
EnHancEd[] kurze enum-Frage Allgemeine Java-Themen 4
X Java findet eine Enum Klasse nicht Allgemeine Java-Themen 2
A Dynamisches Enum? Allgemeine Java-Themen 2
E Wert von enum zur Laufzeit festlegen. Allgemeine Java-Themen 5
D Methode für generische enummap/enum Allgemeine Java-Themen 10
D Array oder Vector in Enum Deklarieren Allgemeine Java-Themen 3
L HashMap mit Enum Keys Allgemeine Java-Themen 3
G Enum mit Array Allgemeine Java-Themen 3
D Wie prüfen, ob ein String Teil eines Enum Types ist? Allgemeine Java-Themen 12
H2SO3- Enum mit Java 1.4 Allgemeine Java-Themen 6
S Erstes Enum bekommen? Allgemeine Java-Themen 2
M Verständnis enum - switch Allgemeine Java-Themen 2
R Java enum switch Allgemeine Java-Themen 11
S Enum-Class valueOf Function? Allgemeine Java-Themen 1
R Java enum Allgemeine Java-Themen 5
J Enum Problem: compiliert nicht mit Sun's compiler. Allgemeine Java-Themen 2
V Wie Enum an Funktion "übergeben" ? Allgemeine Java-Themen 4
N Java und Enum Allgemeine Java-Themen 3
GilbertGrape persistentes Enum oder Konstanten? Allgemeine Java-Themen 3
G enum Integer zuweisen Allgemeine Java-Themen 14
G class, interface, or enum exp? Allgemeine Java-Themen 2
P enum Allgemeine Java-Themen 7
S Java Enum und ordinal() Allgemeine Java-Themen 4
S Enum Fehler Allgemeine Java-Themen 17
C Enum-namespace ? Allgemeine Java-Themen 5
G Effizienz von enum vs. Konstanten Allgemeine Java-Themen 4
C enum und Vererbung Allgemeine Java-Themen 3
K Warunung und Fehler bei Enum.valueOf Allgemeine Java-Themen 2
C enum Strings mit punkt ? Allgemeine Java-Themen 3
J Enum in Java Allgemeine Java-Themen 19
Zrebna SonarLint: Warum kein Null-Referencing-CodeSmell-Hint hier? Allgemeine Java-Themen 23
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
berserkerdq2 Kann keine Labels erstellen, was ist hier syntaktisch falsch Allgemeine Java-Themen 5
N Ist Selenium hier das richtige Werkzeug? Allgemeine Java-Themen 1
Zrebna Wieviele Testfälle muss man hier schreiben? (Software Engineering) Allgemeine Java-Themen 13
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
X Wie mache ich hier eine Rekursion rein ? Allgemeine Java-Themen 7
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
J Einrückungstool mit Farblicher hervorhebung wie hier? Allgemeine Java-Themen 3
V VisualVM Was erkennt ihr hier? Allgemeine Java-Themen 9
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
R Was ist hier falsch? Abfragen Allgemeine Java-Themen 3
X Wer kann mir das hier erklären? Programm frisst RAM! Allgemeine Java-Themen 11
S Singleton hier sinnvol? Allgemeine Java-Themen 20
E Wieso returnt das hier 1? Allgemeine Java-Themen 3
W Wieso funktioniert dieser Code hier? Allgemeine Java-Themen 6
G Warum kommt hier NullPointerException? Allgemeine Java-Themen 3
F Threading oder kein Threading - das ist hier die Frage. Allgemeine Java-Themen 23
D Timer oder Thread, das ist hier die Frage Allgemeine Java-Themen 3
egrath Anonyme Methode - warum hier kein Compilerfehler Allgemeine Java-Themen 2
F Gutes Threads Tutorial hier aber trotzdem eine Frage Allgemeine Java-Themen 7
M Spring oder nicht, das ist hier die Frage Allgemeine Java-Themen 3
S Was ist hier falsch? Allgemeine Java-Themen 16
G wer muss hier wen aufrufen? Allgemeine Java-Themen 7
M Kann man hier noch was rausholen? Allgemeine Java-Themen 16
A Was passiert hier? Allgemeine Java-Themen 13
I Ist JNI hier richtig? Allgemeine Java-Themen 8
B Gibts sogar hier Allgemeine Java-Themen 3
M Unsicher, ob das Code richtig ist Allgemeine Java-Themen 4
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
L Dateien richtig auslesen Allgemeine Java-Themen 6
Thallius Wie parse ich dieses Datum richtig? Allgemeine Java-Themen 5
X Files.walkFileTree zählt nicht richtig Allgemeine Java-Themen 2
F Schleife funktioniert nicht richtig Allgemeine Java-Themen 13
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11
A Methodenaufruf funktioniert nicht richtig Allgemeine Java-Themen 5
H .jar Datei startet nicht richtig bei Doppelklick Allgemeine Java-Themen 11
N Java MVC Pattern richtig anwenden Allgemeine Java-Themen 24
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
T iText mit eclipse richtig in Java-Projekt einbinden Allgemeine Java-Themen 2
The Pi Android TextView richtig formatieren Allgemeine Java-Themen 1
MaxG. Bilddateien richtig einbinden Allgemeine Java-Themen 9
J Erste Schritte DateTimeFormatter richtig anwenden Allgemeine Java-Themen 3
R Erste Schritte Object reference funktioniert nicht. Wie mach ichs richtig? Allgemeine Java-Themen 3
F ExecutorService richtig anwenden Allgemeine Java-Themen 0
J .exe Dateien werden nicht gestartet obwohl Pfad richtig Allgemeine Java-Themen 6
N event_scheduler richtig setzen? Allgemeine Java-Themen 1
N ArrayList in eigenem Object nicht richtig serialisierbar Allgemeine Java-Themen 14
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
buggy84 Ausführen einer Batch mit Parameterübergabe funktioniert nicht richtig Allgemeine Java-Themen 18

Ähnliche Java Themen

Neue Themen


Oben