Klassen Tiefe Kopie mittels Kopierkonstruktor

sgu

Mitglied
Hallo,

versuche gerade wie schon im Titel erwähnt eine tiefe Kopie mittles eines Kopierkonstruktor zu erzeugen. Probleme habe ich, weil im Kopierkonstruktor die Werte des Arrays ja mit übernommen werden müssen. Hatte versucht mittels einer for-Schleife this.werte = kopie.getWerte(i) dem neuen Objekt zu zuweisen, leider ohne Erfolg. Wäre super wenn mir da jmd. weiterhelfen könnte. Vielen Dank schon mal im voraus.

Fehlermeldung beim ausführen des Programms:
Exception in thread "main" java.lang.NullPointerException
at Roulette.<init>(Roulette.java:21)



Java:
import java.util.*;

public class Roulette {

	private int[] werte;      
	
	Roulette() {
		
	}
	
	Roulette(int spielrunden) {
		this.werte = new int[spielrunden];
		Random rand = new Random();
		for (int i = 0; i < spielrunden; i++) {
			werte[i] = rand.nextInt(37);
		}
		
	}
	
	Roulette(Roulette kopie) {
		for(int i = 0; i < werte.length; i++) {
			this.werte[i] = kopie.getWerte(i);
		}
	}
	
	public void ausgabe() {
		for (int i = 0; i < werte.length; i++) {
			System.out.print(getWerte(i) +" ");
		}
	}
	
	public int getWerte(int index) {
		return werte[index];
	}
	
}

public class test {
	
	public static void main(String[] args) {
		Roulette simulation = new Roulette(10);
		simulation.ausgabe();
		
		Roulette simulation2 = new Roulette(simulation);
		simulation2.ausgabe();
	}
}
 
Zuletzt bearbeitet:
> Hatte versucht mittels einer for-Schleife this.werte = kopie.getWerte(i) dem neuen Objekt zu zuweisen, leider ohne Erfolg.

wenn du den Code posten würdest könnte man vielleicht den Fehler finden,
so fragst du effektiv nach einer fertigen Lösung,

trivial genug sie gleich zu posten, vielleicht macht es noch wer, anderseits auch nicht so spannend
 
Extra für SlaterB :bae:
Java:
if (kopie.werte != null) {
    final int len = kopie.werte.length;
    this.werte = new int[len];
    System.arraycopy(kopie.werte, 0, this.werte, 0, len);
}
 
dann schon lieber doch ne Schleife mit 'this.werte = kopie.getWerte(i)',
wenn sowas nicht funktioniert ist das für sich wichtig zu klären 😉

in ausgabe() gehts ja anscheinend weitgehend,

vielleicht ist das neue Array nicht ausreichend angelegt usw., es ist noch nichtmal eine Fehlermeldung genannt
 
Danke faetzminator, klappt alles genau so wie ich es wollte.

@SlaterB
Die Fehlermeldung hatte ich leider vergessen zu posten.
Die fehlerhafte Schleife habe ich den Code hinzugefügt, falls du dir das noch angucken willst. Fehlermeldung ist auch nachgetragen.
 
dann wie vermutet und leicht zu sehen werte null,
es ist wichtig eine NullPointerException zu verstehen und zurückverfolgen zu können,

du musst werte passend anlegen, die Länge zu erfahren ist mit public-Methoden im Moment nicht möglich,
siehe faetzminator
 

Neue Themen


Zurück
Oben