Erzeugen einer Datenstruktur

JRookie

Aktives Mitglied
Hallo zusammen,
ich bin hier in der Vorüberlegung ein sudoku Lösungsfinder zu erstellen und komm bei der Frage der richtigen Datenstruktur nicht wirklich zurecht.
Ich hab ein Objekt das heißt Punkt und besteht aus 3 integer Variablen (= die Koordinaten) und einem integer Array und einem String und noch ein paar integers (weiss noch nicht genau).
Davon muß ich 9X9=81 erzeugen, Koordinaten usw. zuweisen. Dann muß ich rumprobieren um die richtigen Werte zu finden,d.h. ich muß über alle Punkte loopen und dabei z.B. auf Punkte in der gleichen Spalte, oder auch Zeile zugreifen und Inhalte vergleichen.

Wie mache ich das am besten ??
Baue ich mir eine "Datenklasse" Punkt, die globale Variablen (die oben aufgezählten ) hat und organisiere die 81 Objekte in einer Arraylist ??
Oder ist es besser mit Arraylist Punkt zu arbeiten und da drin dann sublists zu haben, die aus den Variablen besteht.
In C würde ich einfach eine Datenstruktur bauen und die in einen Objektarray stecken ....
Wer hat Erfahrung, wie gehts am besten ???
Viele Grüße und Danke im voraus
JRookie
 

Gossi

Bekanntes Mitglied
Warum benutzt du nicht einfach nen Mehrdimensionales Array

Java:
DatenStrucktur[][] koordinatenSystem = new DatenStrucktur[8][8]

Wenn du nun z.B. schauen willst ob in das Feld koordinatenSystem[2][5] eine 9 kommt schaust du ob:

koordinatenSystem[2][0-8] eine 9 beinhaltet und ob koordinatenSystem[0-8][5] eine 9 beinhaltet.

Rest musste selber schreiben ^^

Edit, hier reicht sogar sowas:

Java:
int[][] koordinatenSystem = new int[8][8]
 

JRookie

Aktives Mitglied
Die Datenstruktur kann durchaus aus unterschiedlichen Datentypen bestehen ....
z.B. ein string ... ich müsste dann den String jeweils einem Punkt(koordinaten) zuordnen ..
deswegen dachte ich, ich brauch eine Struktur, in der alles drin steckt ... also (vielleicht) ein Objekt, das die verschiedenen Daten(typen) hält und getter- und setter Methoden hat .
Wie organisiere ich dann die 81 Punkte(= Datenobjekte) ???
 

Marco13

Top Contributor
Klingt ziemlich planlos :autsch:

Ich hab ein Objekt das heißt Punkt und besteht aus 3 integer Variablen (= die Koordinaten) und einem integer Array und einem String und noch ein paar integers (weiss noch nicht genau).

Warum 3? Warum ein Array? Was für ein String? Oder allgemein: WARUM weißt du es noch nicht genau?

Baue ich mir eine "Datenklasse" Punkt, die globale Variablen (die oben aufgezählten ) hat und organisiere die 81 Objekte in einer Arraylist ??
Oder ist es besser mit Arraylist Punkt zu arbeiten und da drin dann sublists zu haben, die aus den Variablen besteht.
In C würde ich einfach eine Datenstruktur bauen und die in einen Objektarray stecken ....

Globale Variablen sind schlecht. Was ArrayLists und subLists da zu suchen haben, ist nicht klar. Und solange du nicht weißt, was genau diese "Datenstruktur" repräsentieren soll, kann auch keiner sagen, was die "beste" Lösung wäre. Aber versuch's mal so: Skizziere mal, wie du es in C machen würdest -dann kann sicher jemand was dazu sagen.

Naiv betrachtet ist ein Sudoku ein 9x9-Feld mit int-werten (eigentlich sogar nur bytes). Das ist auch für einen Löser recht gut.
 

faetzminator

Gesperrter Benutzer
Ich hab mir damals für einen SudokuSolver eine Klasse Field mit folgenden Attributen erstellt:
Java:
private boolean isFound;
private int value;
private final List<Integer> possibleValues;
Ich würd das dann einfach in eine [c]List<List<Field>>[/c] packen. Oder aber, wenn du lieber mit Arrays arbeitest, [c]Field[][][/c]. Ich hab mir damals ein [c]MultiDimensionalArray<Field>[/c] geschrieben, aber mein Sudokusolver funktioniert multidimensional ;)
 

Der Müde Joe

Top Contributor
Wenn du OO möchtest, kannst du dir natürlich eine Node<T> machen. Und eine Klasse Coordinates. Und dann das ganze in eine ArryList stecken.

so ca
Java:
public class Node<T> {

	private T data;
	
	private ICoordinate coorinate;
	
	public ICoordinate getCoordinate (){
		return this.coorinate;
	}
}

interface ICoordinate {
	int getX ();
	int getY ();
}

oder eben direkt über das 2d array:
Java:
public static void main(String... _) {
	Node[][] nodes = new Node[9][9];
	for (int x = 0; x < nodes.length; x++) {
		for (int y = 0; y < nodes[x].length; y++) {
			Node<String> node = new Node<String>();
			nodes[x][y] = node;
		}
	}
}

beim ersten ist die Lokation in der Node drin, im zweiten im Array.
 

JRookie

Aktives Mitglied
Ok, ich versuchs mal:
Jedes Sudokufeld hat 3 integer Felder und bestimmt die Koordinaten: Zeile, Spalte, Block.
Außerdem ein Feld (sagnwirmal string) für den Status (frei, fix durch Eingabe, fix durch Lösung),
ein array von int, der die möglichen Lösungswerte hält.
Naja, und was dann während des codierenes noch so an Variablen (Eigenschaften) entstehen könnte, die ich an das einzelne Sudokufeld hängen möchte, ich bin halt bei den Vorüberlegungen ...
 

JRookie

Aktives Mitglied
@faetzminator:
ok, das scheint plausibel: eine Klasse Field, die alle Attribute hält außer den Koordinaten.
Und dann ein mehrdimensionaler Array, der den Platz des Feldes beschreibt. Da kann ich dann leicht drüber suchen.
Ich glaub, das isses.
Danke erstmal an alle, die so schnell was sagen konnten.
 

faetzminator

Gesperrter Benutzer
JRookie:
ich hab gute Erfahrungen damit gemacht. Aber das mit den Koordinaten ist eben so eine Sache. Man muss sich beim Design viel überlegen. Wenn du z.B. gerne hättest, dass beim Setzen eines Feldes diese Zahl in diesem Block, Reihe, Spalte aus den Möglichkeiten "automatisch" gelöscht wird, benötigst du an eben diesem Ort die Koordinaten, um alle anderen auszurechnen.
Auf alle Fälle, ist das Design meines Erachtens nicht ganz einfach...
 

JRookie

Aktives Mitglied
ja, du hast Recht. Sudoku solver regt dazu an, sich erst mal alles zu überlegen, bevor es ans einhacken geht.
Gut, mit der Datenstruktur bin ich jetzt einen Schritt weiter. Ich mach das hier zu und danke euch allen.
JRookie
 

faetzminator

Gesperrter Benutzer
Ich kann sonst gerne mal meinen aktuellen Code providen. Hab das früher schon mal gemacht, hatte den Code allerdings auf irgendeiner alten Platte... Die neue Version ist IMHO nicht so hübsch, aber sie funktioniert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
S Erzeugen einer eindeutigen ID Java Basics - Anfänger-Themen 2
M Objekte mit einer Schleife mehrmals erzeugen Java Basics - Anfänger-Themen 17
C Instanz einer Klasse während if-Abfrage erzeugen und bei zweiter if-Abfrage wiederverwenden Java Basics - Anfänger-Themen 6
N Objekt in Methode einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
P Erste Schritte [gelöst]Erzeugen einer Klasse aus der Klassenbibliothek Java Basics - Anfänger-Themen 4
B OOP Objekte erzeugen mit Hilfe einer for Schleife Java Basics - Anfänger-Themen 29
P Kapselung Variable innerhalb einer inneren Klasse ansprechen ohne ein Objekt erzeugen zu müssen? Java Basics - Anfänger-Themen 6
M Initialisierungsblock beim Erzeugen einer Instanz Java Basics - Anfänger-Themen 6
C Methoden Objekte mit Hilfe einer Schleife in einer ArrayList erzeugen Java Basics - Anfänger-Themen 26
S Mehrere Objekte einer Klasse automatisch erzeugen Java Basics - Anfänger-Themen 15
X Variablen Variablen erzeugen in einer Schleife? Java Basics - Anfänger-Themen 6
B Objekte aus einer anderen Klasse(in der sich weitere Klassen befinden) erzeugen Java Basics - Anfänger-Themen 24
P Klassen Instanz einer Klasse in ihrer eigenen Definition erzeugen? möglich? Java Basics - Anfänger-Themen 4
D Eclipse und Visual Editor - erzeugen einer Tabelle Java Basics - Anfänger-Themen 8
K in Konstruktor neue Objekte einer anderen Klasse erzeugen Java Basics - Anfänger-Themen 9
H Probleme beim erzeugen einer Headerdatei mit javah Java Basics - Anfänger-Themen 3
pindakaas Instanz einer Klasse in einer anderen erzeugen Java Basics - Anfänger-Themen 6
C Erzeugen einer Zufallszeichenkette Java Basics - Anfänger-Themen 4
VfL_Freak [JNI ]aus einer nativen DLL eine JAR-Datei erzeugen ?? Java Basics - Anfänger-Themen 4
R Datentypen ByteArray aus einer .class erzeugen Java Basics - Anfänger-Themen 3
J Datensätze aus einer DB als Objekte erzeugen und in ArrayList abspeichern Java Basics - Anfänger-Themen 9
chik JPanel in einer Methode erzeugen Java Basics - Anfänger-Themen 8
A [gelöst]Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 9
G Erzeugen von Objekten aus einer Methode Java Basics - Anfänger-Themen 8
D Instanz einer Klasse in einer anderen klasse erzeugen Java Basics - Anfänger-Themen 3
S will instanz einer Klasse erzeugen - mach irgendwas falsch Java Basics - Anfänger-Themen 6
B Wie kann ich in einer Schleife Objekte erzeugen? Java Basics - Anfänger-Themen 5
G Objekte in einer Schleife erzeugen Java Basics - Anfänger-Themen 2
W Javadoc HTML erzeugen mit allen dependency Java Basics - Anfänger-Themen 11
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
H Artefact mit Bild erzeugen Java Basics - Anfänger-Themen 11
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
C Runnable Jar-File erzeugen Java Basics - Anfänger-Themen 14
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
C Instanzen, wann muss ich Instanzen erzeugen & wo?) Java Basics - Anfänger-Themen 23
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
L Simples Spielfeld erzeugen Java Basics - Anfänger-Themen 1
G Anklickbaren Text erzeugen Java Basics - Anfänger-Themen 2
I Object-Oriented Programming, Objekt erzeugen Java Basics - Anfänger-Themen 1
P Objekt aus String-Array erzeugen Java Basics - Anfänger-Themen 104
S Mit nextGaussian() positive Zahlen erzeugen? Java Basics - Anfänger-Themen 39
S Array erzeugen mit verschiedener Verteilung Java Basics - Anfänger-Themen 11
B Automatisch Objekte erzeugen mit verschiedenen Namen Java Basics - Anfänger-Themen 4
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
K Methoden JTExtField mit Array erzeugen Java Basics - Anfänger-Themen 13
B Kann man eine Tabelle in Eclipse erzeugen und damit arbeiten? Java Basics - Anfänger-Themen 8
E Best Practice Jar-file mit zwei Klassen und externer Bibliothek über Konsole erzeugen Java Basics - Anfänger-Themen 13
I TextField Array mit for Loop erzeugen Java Basics - Anfänger-Themen 4
G Objekt der selben Klasse wie selbst mit Aufrufen des Konstruktors erzeugen Java Basics - Anfänger-Themen 14
J Eindeutige Nummer (8 stellig) erzeugen Java Basics - Anfänger-Themen 9
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
neerual Int-Felder erzeugen Java Basics - Anfänger-Themen 16
R Objekte zur Laufzeit in Schleife erzeugen und in ArrayList ablegen Java Basics - Anfänger-Themen 4
D Erste Schritte Random erzeugen Java Basics - Anfänger-Themen 28
P Objekt mit =new in Methode erzeugen Java Basics - Anfänger-Themen 4
L Threads Laufbild Erzeugen Problem mit Aktualisieren des JPanels Java Basics - Anfänger-Themen 2
J In Java einen Ton erzeugen Java Basics - Anfänger-Themen 8
C Array Muster erzeugen Java Basics - Anfänger-Themen 2
S Objekte "gegebenfalls" erzeugen Java Basics - Anfänger-Themen 5
D Java Ausdruck erzeugen / Formular Java Basics - Anfänger-Themen 4
R Baum erzeugen Java Basics - Anfänger-Themen 61
D Objekt per If erzeugen. Java Basics - Anfänger-Themen 11
J Bildschirmausgabe erzeugen Java Basics - Anfänger-Themen 30
B Beliebig viele Rechtecke erzeugen Java Basics - Anfänger-Themen 5
J Objekt mit Methodendruchlauf erzeugen Java Basics - Anfänger-Themen 1
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
C Int mit vorangestellten Nullen und maximal 4 stellen erzeugen. Java Basics - Anfänger-Themen 4
P Input/Output Objekte per Eingabe erzeugen Java Basics - Anfänger-Themen 1
D Erste Schritte Dynamisch Objekte erzeugen und diese durchsuchen Java Basics - Anfänger-Themen 7
U JNA: Strukturen erzeugen Java Basics - Anfänger-Themen 8
S Variablen Variable erzeugen und Array mit Variablen befüllen Java Basics - Anfänger-Themen 26
S Header- Datei erzeugen mit javah Java Basics - Anfänger-Themen 1
J Objekte zur Laufzeit erzeugen und direkt verwenden Java Basics - Anfänger-Themen 9
R Erste Schritte Schleife erzeugen (mit If Anweisung) Java Basics - Anfänger-Themen 3
I HTML Tabelle nur so lange erzeugen bis Höhe erreicht Java Basics - Anfänger-Themen 9
M Zusatzzahlen in array erzeugen Java Basics - Anfänger-Themen 5
B Stützstellen (Vektor) erzeugen? Java Basics - Anfänger-Themen 8
Z Erste Schritte 9x9 Felder Erzeugen+Aufrufen Java Basics - Anfänger-Themen 1
Y Variable Menge von Objekten erzeugen und mit ihren Attributen rechnen Java Basics - Anfänger-Themen 7
J Anzahl von for-Schleifen in Abhängigkeit von Zahleneingabe erzeugen Java Basics - Anfänger-Themen 1
J JLabels in schleife erzeugen mit verschiedenen namen? Java Basics - Anfänger-Themen 5
K JLabel zur Laufzeit dynamisch erzeugen Java Basics - Anfänger-Themen 7
F Input/Output Blocking file read erzeugen Java Basics - Anfänger-Themen 0
Thallius Klassen aus Classname programmatisch erzeugen. Wie geht das in java? Java Basics - Anfänger-Themen 5
B Zufallsdatum innerhalb eines bestimmten Bereiches erzeugen Java Basics - Anfänger-Themen 3
D JComboBox erzeugen Java Basics - Anfänger-Themen 1
J Erste Schritte Array dyn. erzeugen Java Basics - Anfänger-Themen 2
A OOP Objekte per Schleife erzeugen Java Basics - Anfänger-Themen 1
F Superklasse nochmals erzeugen? Java Basics - Anfänger-Themen 7
G Instanzen eines Interfaces erzeugen Java Basics - Anfänger-Themen 7
M Variablen Variable zur Laufzeit erzeugen Java Basics - Anfänger-Themen 3
P Vererbung Neues Objekt aus Vorlage erzeugen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben