array frage

Status
Nicht offen für weitere Antworten.
B

Beginner007

Gast
Code:
public class Karte {
	String farbe, rang;
	int wert;
	boolean istAktivImSpiel;
}



public class Game {

	public static void main(String[] args) {

		Karte[] karten = new Karte [31];
		String farben[] = {"Kreuz", "Pik", "Herz", "Karo"};
		String rang[] = {"Sieben", "Acht", "Neun", "Zehn", "Bube", "Dame", "Koenig","Ass"};
		
		karten[0].farbe = "Kreuz";

	}

}
java.lang.NullPointerException
Game.java:14

Ich kann nicht verstehen, warum Fehler zeigt. hilfe bitte
Danke im Voraus.

MfG
Beginner007
 
S

SlaterB

Gast
karten[0] ist null,

nirgendwo steht
karten[0] = new Karte();

Java macht das nicht von allein ;)
 
G

Guest

Gast
Code:
public class Karte { 
   String farbe, rang; 
   int wert; 
   boolean istAktivImSpiel; 
}

Code:
public class Game {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Karte[] karten = new Karte [31];
		int temp;
		String farben[] = {"Kreuz", "Pik", "Herz", "Karo"};
		String rang[] = {"Sieben", "Acht", "Neun", "Zehn", "Bube", "Dame", "Koenig","Ass"};
		
		karten[0].rang = "Kreuz"; 

   } 

}
 

Niki

Top Contributor
Wenn du eine Array mit new Karte[31] anlegst. Werden die einzelnen Felder des Arrays mit "null" initialisiert. Du greifst aufs erste Element mit karten[0] zu, obwohl das Element auf kein Objekt zeigt. mach:
Code:
 karten[0] = new Karte();
 karten[0].rang = "was auch immer";
 
G

Guest

Gast
danke euch für schnelle antwort, dank euch hab den fehler korrigiert.

Die richtige Ist:

Code:
public class Game {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Karte[] karten = new Karte [31];
		
		int temp;
		String farben[] = {"Kreuz", "Pik", "Herz", "Karo"};
		String rang[] = {"sieben", "acht", "neun", "zehn", "bube", "dame", "koenig","ass"};
		
		for(int k=0; k<karten.length; k++){
			karten[k] = new Karte();			
			if (0 == k) temp = 0; else temp = (int)(k/8);			
			karten[k].farbe	= farben[temp];			
			karten[k].rang	= rang[k%8];
			System.out.println(karten[k].farbe + karten[k].rang);			
		}
		
	}

}
 

Niki

Top Contributor
Anonymous hat gesagt.:
danke euch für schnelle antwort, dank euch hab den fehler korrigiert.

Die richtige Ist:

Code:
			if (0 == k) temp = 0; else temp = (int)(k/8);

etwas angenehmer zu lesen ist:
Code:
			temp = k == 0 ? 0 : k/8;
 

Murray

Top Contributor
Noch ein paar Tipps dazu:

1. den Code
Code:
if (0 == k) temp = 0; else temp = (int)(k/8);
kann man mit dem ternären Operator etwas kürzer schreiben:
Code:
temp = (k == 0) ? 0 : (k/8);

//EDIT: viel zu langsam - und Slater hat natürlich recht; in diesem Fall braucht man die Fallunterscheidung eigentlich überhaupt nicht. :oops:



2. Mach die Member der Klasse Karte lieber private und definiere für den Zugriff eigene get- und (ggfs.) set-Methoden. Überlege dabei, ob sich die jeweiligen Werte an einer Instanz jeweils während ihrer Lebensdauer ändern können (würde ich für Farbe und Rang eine Karte jetzt erstmal bezweifeln). Ist ein Member seiner Natur nach unveränderlich, setze es auf final und weise es direkt im Konstruktor zu.

Code:
public class Karte {
   private final String farbe;
   private final String rang;
   /* ... */

  public Karte( final String farbe, final String rang) {
     this.farbe = farbe;
     this.rang = rang;
  }

  public String getFarbe() {
    return farbe;
  }

  public String getRang() {
    return farbe;
  }

  /* ... */
}

3. Wenn ein Feld einen festen Wertebereich haben kann, dann bietet es sich meistens an, dafür einen enum-Typ zu verwenden. Damit ist man wesentlich typsicherer, als wenn man beliebige String zulässt; dann prüft nämlich bereits der Compiler, ob z.B. der Paramter für die Frabe einen erlaubten Wert hat.
 
G

Guest

Gast
Erstmal vielen dank für die Antworten! :toll:
hab umgeschrieben, wie ihr geraten habt.


Code:
public class Game {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		KartenSet neuSet = new KartenSet(400);
		for (int i=0; i< neuSet.karten.length; i++){

			System.out.println(neuSet.karten[i].getFarbe() + neuSet.karten[i].getRang());
		}
		
		
		
	}

}


Code:
public class Karte {
	private final String farbe;
	private final String rang;
	private int wert;
	private boolean istAktiv;
	
	
	//Der Konstruktor Karte(farbe, rang) setzt Kartenfrabe und Kartenrang.
	public Karte( final String farbe, final String rang) { 
	     this.farbe = farbe; 
	     this.rang = rang; 
	}
	
	//Die Methode getFarbe() gibt die kartenFarbe zurück.(als String)	
	public String getFarbe(){
		return this.farbe;
	}
	
	//Die Methode setRang() gibt der Rang der Karte zurück.(als String) 
	public String getRang(){
		return this.rang;
	}
	
	//Die Methode setWert(int) setzt wert.
	public void setWert(int wert){
		this.wert = wert;
	}
	
	//Methode getWert() gibt wert zurück.(als int)
	public int getWert(){
		return this.wert;
	}
	
	//Methode setIstAktiv setzt istAktiv.
	public void setIstAktiv(boolean istAktiv){
		this.istAktiv = istAktiv;
	}
	
	//Methode getIstAktiv gibt istAktiv zurück.(als boolean)
	public boolean getIstAktiv(){
		return this.istAktiv;
	}
}

Code:
import java.util.Random;


public class KartenSet {
Karte karten []=  new Karte[31];
	
	KartenSet(int mixFactor){
		
		String farben[] = {"Kreuz", "Pik", "Herz", "Karo"};
		String rang[] = {"sieben", "acht", "neun", "zehn", "bube", "dame", "koenig","ass"};
		
		for(int k=0; k<karten.length; k++){			
			karten[k] = new Karte(farben[k/8], rang[k%8]);			
						
		}
		this.mixKarten(mixFactor);
		
		
	}
	public void mixKarten(int mixFactor){
		Random generator = new Random();
		
		for (int i=0; i < mixFactor; i++){
			int r1 = generator.nextInt(31);
			int r2 = generator.nextInt(31);
			//Kartentaush
			Karte temp 	= this.karten[r1];
			this.karten[r1] 	= this.karten[r2];
			this.karten[r2] 	= temp;
		}
		
	}
}

3. Wenn ein Feld einen festen Wertebereich haben kann, dann bietet es sich meistens an, dafür einen enum-Typ zu verwenden. Damit ist man wesentlich typsicherer, als wenn man beliebige String zulässt; dann prüft nämlich bereits der Compiler, ob z.B. der Paramter für die Frabe einen erlaubten Wert hat.

Ich habe das Kapitel "Aufzählungen(enum)" noch nicht gelesen. :###
 

Murray

Top Contributor
Anonymous hat gesagt.:
Ich habe das Kapitel "Aufzählungen(enum)" noch nicht gelesen. :###
Das ist kein Hexenwerk, aber man muss sich natürlich auch nicht sofort damit belasten; funktionieren wird es auch so.
Grundsätzlich würde es nur darum gehen, statt der String-Arrays für Farben und Rang jeweils einen Aufzählungstyp zu definieren:
Code:
enum Farbe {Kreuz, Pik, Herz, Karo};
enum Rang {sieben, acht, neun, zehn, bube, dame, koenig,ass};

Dann würde man die Member und natürlich auch die Zugriffsmethoden bzw. Konstruktorparameter mit diesen Typen statt mit Strings definieren - das ändert am Programm nicht viel, erlaubt es aber eben, bereits zur Compile-Zeit zu prüfen, ob nur erlaubte Werte verwendet werden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Frage zum Array Java Basics - Anfänger-Themen 1
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
H Frage zum 2d Array Java Basics - Anfänger-Themen 1
H Frage zum Array Java Basics - Anfänger-Themen 17
W Stream Array List - Frage Java Basics - Anfänger-Themen 5
O Ganz einfache Frage - Array Java Basics - Anfänger-Themen 5
H Frage zu Übungsaufgabe, Array Java Basics - Anfänger-Themen 7
O boolean Array Frage! Java Basics - Anfänger-Themen 4
A Frage zu einem Array Java Basics - Anfänger-Themen 14
M Eine Frage zu Array Java Basics - Anfänger-Themen 6
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
M Methoden Array unbedingt klonen? und Point Frage. Java Basics - Anfänger-Themen 4
C Input/Output Anfänger Array-Verständnis Frage Java Basics - Anfänger-Themen 7
S Frage zu Array Java Basics - Anfänger-Themen 7
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4
S Frage zu Elterklasse Array Java Basics - Anfänger-Themen 6
P Array Frage Java Basics - Anfänger-Themen 3
S Frage zur Array Ausgabe Java Basics - Anfänger-Themen 3
R Kleine Frage zu Array Java Basics - Anfänger-Themen 2
G array Frage Java Basics - Anfänger-Themen 2
G array frage Java Basics - Anfänger-Themen 11
F Frage zu Array Java Basics - Anfänger-Themen 2
T Frage zu einem kleinen programm mit array's Java Basics - Anfänger-Themen 8
K Kurze Frage zur Sortierung von Array-Inhalten Java Basics - Anfänger-Themen 5
A Array Verständnis Frage Java Basics - Anfänger-Themen 4
M Frage zu Array Java Basics - Anfänger-Themen 2
C Frage zu: String einlesen -> Array von Chars erhalten Java Basics - Anfänger-Themen 4
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben