Objekte dynamisch erzeugen

Status
Nicht offen für weitere Antworten.
Z

Zero

Gast
Hallo Leute,
Ich mache mir gerade ein Poker Programm, nun möchte ich die Karten erzeugen.

momentan erzeuge ich die Karten so:
Code:
CKarten k1 = new CKarten(farbe, wert);
CKarten k2 = new CKarten(farbe, wert);
CKarten k3 = new CKarten(farbe, wert);
......


ich dachte mir aber das es sicher auch irgenwie möglich sein muss die Karten in einer Schleife zu erzeugen, so dass die Karte immer k+i also einen variablen namen hatt damit ich sie in einer for-schleife hochzählen kann. Doch habe ich auch selber gemerkt das ich dem Objekt CKarte nicht mit einem String oder integer erzeugen kann. Hat jemand eine Lösung für mein Problem?

meine Vorstellung Karten zu generieren (geht nicht!):
Code:
for(int i=0; i<7; i++){
	CKarten "k"+i = new CKarten(farbe, wert);
}
 

Bleiglanz

Gesperrter Benutzer
nimm ein Array

Code:
CKarten[] cKarten = new CKarten[7];
for(int i=0; i<7; i++){
   cKarten[i] = new CKarten(farbe, wert);
}

für das k kannst du eventuell ein doppeltes Array CKarten[][] nehmen...
 
Z

Zero

Gast
Danke, das ging aber schnell :)

Kannst du auch mein zweites Problem lösen? Nämlich muss ich jetzt noch herausfinden ob k1.wert 2x im aaray forhanden ist. Macht man das in 2 verschachtelten for schleifen? oder wie muss ich da forgehen?
 

AlArenal

Top Contributor
Wie gut, dass wir dieses Thema so selten haben!

Der nächste, der dafür nen neuen Thread aufmacht, zahlt 50 Cent in die Kaffeekasse....
 
S

SlaterB

Gast
alternativ zu den doppelten Schleifen:
1. Array sortieren nach dem Wert
(Arrays.sort()-Operation, CKarten muss Interface Comparable implementieren, bei Fragen schaue in ein Lehrbuch zu diesem Stichwort ;) )
und dann einmal durchlaufen und schauen ob zwei benachbarte Felder gleichen Wert haben

2.
die Schleife einmal durchlaufen und alle Werte merken,
z.B. in einem anderen int-Array jeweils das werte Feld um 1 erhöhen (Karte 5 -> 5. Feld anschauen und um 1 erhöhen)

am Ende muss im Array überall 2 stehen oder wie auch immer du das genau haben möchtest
(
 
Z

Zero

Gast
Ah ich bin schon halb am verzweifeln :? kann mir niemand kurtz ein konkretes beispiel geben oder einen Link zu einem änlichen post?

Ich möchte gerne meine Objekte vergleichen und festellen wieviele den gleichen wert beinhalten. Nämlich aus: CKarten.m_wert und eben diesen "m_wert " möchte ich vergleichen.
 

norman

Top Contributor
Code:
for (int i=0; i<CKarten.length(); i++) {
   if (CKarten[i].m_wert == deinIrgendwas) 
      deinZaehler++;
}
:?:
 
Z

Zero

Gast
Ja so ähnlich habe ich es auch versucht, ich sehe auch keinen Fehler und es zeigt auch keinen an, doch wenn ich das Programm ausführe und die Werte vergleichen lasse bekomme ich immer eine "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException" und ich habe keine ahnung warum dies nicht funktioniert.

Code:
	private void functionPair() {
		int samecards = 0;
		
		for (int i=0; i<7; i++) {
			if(mycards[i]!=null && mycards[i+1]!=null){
				
				for(int j = i + 1; j<7; j++){
					if (mycards[i].m_wert == mycards[j].m_wert){
						samecards++;
					}
			   
				}
			}
		}
		System.out.println("samecards:  " + samecards);
		
	}
 

norman

Top Contributor
gib doch mal die ganze fehlermeldung. (Zeile in der der Fehler auftritt?)

btw:
public class NullPointerException extends RuntimeException

Thrown when an application attempts to use null in a case where an object is required.
 
Z

Zero

Gast
Es ist mir wirklich rätzelhaft warum mein code nicht funzt...

hier die ganze fehlermeldung (aber ich glaube nicht das die weiterhilft):
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at CPanelEingabe.functionPair(CPanelEingabe.java:187)
at CPanelEingabe.actionPerformed(CPanelEingabe.java:168)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
 
Z

Zero

Gast
die Zeile 168 ist nur der aufruf der Funktion: functionPair();
und die Zeile 187 ist die in meiner for-schleife die oben abgebildet ist: if (mycards.m_wert == mycards[j].m_wert){
 
S

SlaterB

Gast
wieso ist dir rätselhaft dass dein Code funktioniert wenn du gar nicht so genau weißt was in deinem Code passiert?
z.B. weißt du gar nicht was dieses sieben Karten sind

die einzige Möglichkeiten in der Operation functionPair() eine NullPointerException zu erzeugen ist ein null-Array oder
ein Array das null-Objekte erhält

das prüfst du gar nicht ab und wie gesagt weißt du sonst wohl auch nicht was in den Karten so drin ist,
dabei sind das sehr einfache und überhaupt nicht rätselhafte Schritte

nimm stattdessen folgendende Operation und es kann praktisch nix mehr schiefgehen
(sofern ich es nicht vergessen habe ;), dass Problem dass Karten fehlen ist damit natürlich noch nicht gelöst)

Code:
	private void functionPair() {
		int samecards = 0;

		if (mycards == null) {
			System.out.println("mycards ist null");
			return;
		}

		if (mycards.length < 7) {
			System.out.println("mycards hat eine Länge von: "+mycards.length+", nicht 7 wie angenommen..");
			return;
		}
		
		
		for (int i = 0; i < 7; i++) {
			if (mycards[i] == null) {
				System.out.println("mycards["+i+"] ist null");
			}

			if (mycards[i] != null) {
				for (int j = i + 1; j < 7; j++) {
					if (mycards[j] == null) {
						System.out.println("mycards["+j+"] ist null");
					} else {
						if (mycards[i].m_wert == mycards[j].m_wert) {
							samecards++;
						}
					}
				}
			}
		}
		System.out.println("samecards:  " + samecards);

	}
wenn du 4 gleiche Karten hast wird der Wert von samecards übrigens 3 + 2+ 1 = 6 sein, keine Ahnung ob das so gedacht ist..
 
Z

Zero

Gast
Danke !!! :)

meine Karten gibt es schon und ich hatte ja auch nur einen kleinen Fehler drinnen... es geht jetzt alles, ausser wie du es angetönt hast ich habe jetzt bei 4 gleichen karten den wert 6 in samecards. wie kommt das denn?

Code vorher:
Code:
for (int i=0; i<7; i++) {
			if(mycards[i]!=null && mycards[i+1]!=null){
				
				for(int j = i + 1; j<7; j++){
					if (mycards[i].m_wert == mycards[j].m_wert){
						samecards++;
					}
			   
				}
			}
		}

code jetzt:
Code:
for (int i=0; i<7; i++) {
			if(mycards[i]!=null){

				for(int j = i + 1; j<7; j++){
					if(mycards[j]!=null){
						if (mycards[i].m_wert == mycards[j].m_wert){
								samecards++;
						}
					}
					   
				}
			}
}
				System.out.println("samecards:  " + samecards);
 
Z

Zero

Gast
ok ich habe das 3+2+1 = 6 verstanden, jetzt muss ich mir nur noch etwas für dieses problem überlegen, ausser jemand weis daruaf gerade eine schnelle Lösung. ansonsten Danke für alles

Gruss Zero
 
S

SlaterB

Gast
was möchtest du denn überhaupt haben?
angenommen zwei Karten sind gleich,
dann würde ein Vergleich true ergeben (z.B. bei i=1 und j=5 wenn 1. und 5. Karte gleich sind) und samecards wäre dann 1,
ist das wenigstens richtig oder soll dann 2 der Wert sein?

gibt es mehrere Doppelte, also zwei Zweierpärchen oder kann das ausgeschlossen werden?
du musst schon genauer sagen worum es überhaupt geht..

allgemein rate ich immer noch zu einer von den bereits vorgeschlagenen Lösungen, z.B.

Code:
		int maxWert = 32;
		int[] anzahlVonKarte = new int[maxWert];
		
		for (int i = 0; i < 7; i++) {
			if (mycards[i] != null) {
				if (anzahlVonKarte[mycards[i].m_wert] > 0) {
					// mindestens eine Karte mit diesem Wert schon vorhanden
					if (anzahlVonKarte[mycards[i].m_wert] == 1) {
						// ein Paar gefunden
						samecards += 2;
					} else {
						// eine weitere Karte zu einem vorhandenen Paar/ Dreier/ ..
						samecards++;
					}
				}
				anzahlVonKarte[mycards[i].m_wert]++;
			}
		}

		System.out.println("samecards:  " + samecards);

da musst du das Array nur einmal durchlaufen und hast am Ende nochmal eine Übersicht (ein Array) wieviele Karten von jedem Wert da sind
 
Z

Zero

Gast
ja das war genau das was ich brauchte...

Zur nachfollziheung: das array: mycards sind meine karten die ich auf der hand habe die gehen am anfang von 0 und bis am schluss 7. In der Funktion: funktionPair() möchte ich auf alle vorhandenen paare prüfen... So wie du es jetzt gelöst hast ist es ganau richtig, DANKE

Später Brauche ich noch eine Funktion für die Strasse die alle karten nebeneinader prüft und eine funktion die auf die farbengleichcheit prüft..

Ich mache mir ein programm das die Wahrscheinlichkeit im Pokern ausrechnet und dir eine Hilfestellung gibt. es prüft die Wahrscheinlichkeit auf eine gute Hand im verhälniss zum Wetteinsatz.. wenn du möchtest kann ich es dir (SlaterB) mal schicken sobald ich fertig bin, als dank für die hilfestellung.
 

Leroy42

Top Contributor
Zero hat gesagt.:
Ich mache mir ein programm das die Wahrscheinlichkeit im Pokern ausrechnet und dir eine Hilfestellung gibt.

und das Programm überträgst du dann auf dein Handy und
klapperst die Spielkasinos ab :shock:

:noe: Schäm dich! :noe:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Erste Schritte Dynamisch Objekte erzeugen und diese durchsuchen Java Basics - Anfänger-Themen 7
H Objekte dynamisch erzeugen? Java Basics - Anfänger-Themen 6
R Objekte dynamisch erstellen? Java Basics - Anfänger-Themen 14
B Klassen Objekte während der Laufzeit dynamisch anlegen Java Basics - Anfänger-Themen 8
R Liste graphischer Objekte z.B. JButton dynamisch erstellen Java Basics - Anfänger-Themen 13
6 Swing: Dynamisch erzeugte Objekte sind verschoben Java Basics - Anfänger-Themen 2
S Objekte dynamisch anlegen Java Basics - Anfänger-Themen 3
F Objekte dynamisch erstelle Java Basics - Anfänger-Themen 11
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
A (Objekte Java Basics - Anfänger-Themen 6
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
G Java Objekte auf Duplikate testen Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Objekte miteinander vergleichen Java Basics - Anfänger-Themen 18
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
J Java GUI- Objekte Position per Quelltext bestimmen Java Basics - Anfänger-Themen 4
G Objekte in Methoden? Java Basics - Anfänger-Themen 13
H Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen Java Basics - Anfänger-Themen 7
S Frage Klasse und Objekte Java Basics - Anfänger-Themen 2
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
I Objekte Hilfe Java Basics - Anfänger-Themen 8
G Klassen und Objekte Java Basics - Anfänger-Themen 2
W Verschachtelte Objekte wieder auspacken Java Basics - Anfänger-Themen 3
R Attribute mehrerer Objekte ausgeben Java Basics - Anfänger-Themen 3
C Objekte und Konstruktoren Java Basics - Anfänger-Themen 2
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
O ObjectOutputStream Anzahl Objekte festhalten Java Basics - Anfänger-Themen 17
R Objekte aus Array als String + kommasepariert speichern Java Basics - Anfänger-Themen 12
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
J Best Practice Dateiinhalte validieren und auf Objekte mappen Java Basics - Anfänger-Themen 3
B Automatisch Objekte erzeugen mit verschiedenen Namen Java Basics - Anfänger-Themen 4
der_Schokomuffin Hilfe gesucht beim Thema Objekte übergeben! Java Basics - Anfänger-Themen 2
S Konstruktor, Objekte Java Basics - Anfänger-Themen 4
PaperHat Objekte in Array vergleichen Java Basics - Anfänger-Themen 9
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
PaperHat Programmieraufgabe - Objekte in Objekten Java Basics - Anfänger-Themen 2
E Methode mit Parametern um Objekte zu übergeben Java Basics - Anfänger-Themen 4
V Collections Objekte einer ArrayList in der main() ausgeben Java Basics - Anfänger-Themen 9
T Klassen Klassenübergreifende Objekte erstellen lassen Java Basics - Anfänger-Themen 5
A Objekte verknüpfen Java Basics - Anfänger-Themen 2
M Objekte mit einer Schleife mehrmals erzeugen Java Basics - Anfänger-Themen 17
B Klassen Alle Unter-Objekte durchlaufen in der Hauptklasse Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
S Zählen der Zeiger auf Objekte Java Basics - Anfänger-Themen 35
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
B Erste Schritte Objekte von JFrame der Fenstergröße anpassen Java Basics - Anfänger-Themen 3
M Klassen und Objekte Java Basics - Anfänger-Themen 2
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
J Array Objekte einer Klasse zuordnen Java Basics - Anfänger-Themen 15
H Interface Objekte speichern und laden (serialisieren/deserialisieren) Java Basics - Anfänger-Themen 1
Orkanson Objekte in ein Array einfügen Java Basics - Anfänger-Themen 5
X Objekte in ArrayList einfügen Java Basics - Anfänger-Themen 10
L Vorherige Objekte zählen und ausgeben Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben