zufallszahlen in Array Speichern = Nullpointer exception

Kekzii

Mitglied
Hay :)
folgendes Problem :

ich möchte 6zufallszahlen erzeugen und diese in ein Array speichern nur leider bekomme ich immer eine NullpointerException und ich verstehe nicht wirklich wieso..

hiermal der Code-ausschnitt wo der Fehler entsteht:

Java:
	public void setZufall() {
		for(int i = 1;i<= 6;i++){
		this.zufall =  Math.random();
		this.zufall *= 50;
		zufall = (int) zufall;
		if(zufall > 49){
			zufall = 49;
		}
		zahlen[i] =(int)zufall;
		}
	}

Nun die fehler-Meldung kommt an der stelle
Java:
zahlen[i] =(int)zufall;

hoffe ihr könnt mir einen Tipp geben

mfg Kekzii
 

Marco13

Top Contributor
Weil der Array 'null' ist. Am Anfang der Methode ein
zahlen = new int[6];
sollte es tun...

EDIT: Die Schleifengrenzen sind noch falsch (0 bis <6, nicht 1 bis <=6). Und sonst, etwas... kürzer
Java:
public void setZufall() {
    zahlen = new int[6];
    for(int i = 0;i<zahlen.length;i++){
        zahlen[i] = (int)(Math.random()*50);
    }
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
[c]zahlen[/c] wohl [c]null[/c] sein. Erstelle jeweils ein neues Array:
Java:
public void setZufall() {
    zahlen = new int[6];
    for(int i = 0;i < zahlen.length; i++){
        [...]
 

Michael...

Top Contributor

Kekzii

Mitglied
danke für die schnellen Antworten :)

wäre dies dann soweit richtig?

hier mal der gesamte bisherige code :
Java:
public class Lotto {
	double zufall;
	int[] zahlen = new int[6];
	int[] einZahlen;
	public double getZahlen() {
		return zufall;
	}
	public void setZufall() {
		for(int i = 1;i<= zahlen.length;i++){
		this.zufall =  Math.random();
		this.zufall *= 50;
		if(zufall > 49){
			zufall = 49;
		}
		zahlen[i] =(int)zufall;
		}
	}	
		
}

und dieses
Java:
 	int[] zahlen = new int[6];
sagt das aus , dass das Array die länge 6 hat? also zahlen.length = 6?
 

Marco13

Top Contributor
Syntaktisch richtig. D.h es compiliert.
Und ... richtig in dem Sinne, dass es sich ohne Exceptions ausführen läßt vermutlich (!) auch.
Nur dass beim Lotto keine Zahl mehrfach gezogen werden kann ;)

EDIT: Das mit der ArrayLänge: Ja.
EDIT2: Sozusagen :oops: siehe nächste Antwort
EDIT3: Ja, die Arraygrenzen, hatte ich ja weiter oben schon gesagt. Testen wäre eine Möglichkeit ;)
 

faetzminator

Gesperrter Benutzer
und dieses
Java:
 	int[] zahlen = new int[6];
sagt das aus , dass das Array die länge 6 hat? also zahlen.length = 6?

Es erzeugt ein neues Array von int's mit der Länge 6.

Nein, dein Code beginnt immer noch bei Index 1 und hört bei <length> auf. In allen gängigen Programmiersprachen beginnt der Index aber bei 0 und hört bei <length - 1> auf. Also statt [c]for(int i = 1;i<= zahlen.length;i++)[/c] verwende [c]for(int i = 0; i < zahlen.length; i++)[/c].

Edit:
Und ... richtig in dem Sinne, dass es sich ohne Exceptions ausführen läßt vermutlich (!) auch.
nönö :D
 

Kekzii

Mitglied
Nein, dein Code beginnt immer noch bei Index 1 und hört bei <length> auf.

das habe ich bereits geändert nur kriege ich die Fehler-Meldung "java.lang.ArrayIndexOutOfBoundsException: 6"


Nur dass beim Lotto keine Zahl mehrfach gezogen werden kann
ja das weiss ich aber habe grade erst begonnen also war ich noch nicht so weit :p

wollte ja erstmal sehen wie weit ich komme und momentan sehe ich einige Defizite bei mir ^^
 

Landei

Top Contributor
Lottozahlen garantiert ohne doppelte Werte:
Java:
List<Integer> list = new ArrayList<Integer>();
for(int i = 1; i <= 49; i++) {
   list.add(i);
}
java.util.Collection.shuffle(list);
int[] zahlen = new int[6];
for(int i = 0; i < zahlen.length; i++) {
  zahlen[i] = list.remove(0);
}
 

ARadauer

Top Contributor
das habe ich bereits geändert nur kriege ich die Fehler-Meldung "java.lang.ArrayIndexOutOfBoundsException: 6"
ist das array 6 Elemente lang, gibt es kein Element 6, da du ja bei 0 anfängst...
0,1,2,3,4,5

for(int i = 1;i<= zahlen.length;i++){
muss so lauten
for(int i = 0; i < zahlen.length;i++){

ICh würd mir das so anfangen "von 0 bis kleiner länge"
 

Michael...

Top Contributor
Die for Schleife läuft in den falschen Grenzen, ausserdem kannst Du dir diese if-Abfrage sparen, da Du aus der Zufalls sowie so ein int machst.
Java:
	for(int i = 0; i<zahlen.length; i++){
		zufall =  Math.random()*50;
		zahlen[i] =(int)zufall;
	}
 

Kekzii

Mitglied
ups :bloed:

hab vergessen aus dem <= ein < zu machen :oops:

jetzt bekomme ich folgende ausgabe

//das sind alle zahlen einzelnd
Zahl0: 46.53426612762656
Zahl1: 22.357873834451738
Zahl2: 22.76751884598538
Zahl3: 13.868392420470482
Zahl4: 33.38451842419757
Zahl5: 11.241720365730218
//das is das Array
Zahlen : [I@1ddebc3

aber ich habe das doch gecasted zu einem int also dürften da doch keine komma-zahlen bei rum kommen oder?

EDIT: was is denn eine Arraylist :bahnhof: da versteh ich doch nichts von :bahnhof: ich bin doch noch ein beginner :(
 

ARadauer

Top Contributor
kekzii! wennst dich blöd anstellst, hilft dir niemand mehr! ;-)
jetzt bekomme ich folgende ausgabe
was sollen wir mit der ausgabe, wenn wir das programm nicht kennen?
Wenn ich davon ausgehen, dass du hier einfach dein int array ausgibst... ist die ausgabe unmöglich

was is denn eine Arraylist da versteh ich doch nichts von ich bin doch noch ein beginner
auch ein beginnner kann google fragen, was eine arraylist ist!
 

Kekzii

Mitglied
okay :D aber schreien musst du nich :p

also nochmal mein programm inclusive main

Java:
public class Lotto {
	double zufall;
	int[] zahlen = new int[6];
	int[] einZahlen;

	public int[] setZufall() {
		for(int i = 0;i< zahlen.length;i++){
		this.zufall =  Math.random();
		this.zufall *= 50;
		if(zufall > 49){
			zufall = 49;
			
			
		}
		zahlen[i] =(int) zufall ;
		System.out.println("Zahl" + i + ": " + (int)zufall);
		}
		return zahlen;
	}

Main:
[Java]

public class lotto_test {

public static void main(String[] args){
Lotto t = new Lotto();

System.out.println("Zahl : " + t.setZufall());
}
}[/code]

das mit dem googlen krieg ich hin :)

denke das Programm is noch ein wenig unstrukturiert aber lesbar :)
 

Kekzii

Mitglied
Neues Problem :D

ArrayList verstanden, ist aber erst ab JRE 1.5 verfügbar.. wäre nicht das Problem wenn ich hier auf dem PC installationsrechte hätte. Da diese nicht vorhanden sind, geht das wohl nicht :D

gibts ne möglichkeit dies einfacher zu gestalten als durch tausend IF-abfragen?

ansonsten mache ich das jetzt einfach :) auch wenns dann ein bisschen doof aussieht :D
 

Kekzii

Mitglied
Habe 1.4.2
scheint für oracle zu reichen :D

wenn ich die <...> weglasse dann meckert er und möchte eine lokale variable "Integer " erstellen, jedoch denke ich nich das das sinn und zweck der Sache ist

ich glaube es wird wohl darauf hinaus laufen das ich doch tausend if abfragen machen muss :wuerg:

google konnte mir jetzt auch noch nicht dabei weiterhelfen :D
 

srea

Bekanntes Mitglied
Hmmm, warum tausend if-Abfragen? Prüfe in der for-Schleife mit einer andren For-Schleife ob die Zahl schon im Array ist, wenn ja neue Zufallszahl und prüfe nochmal. Müsste so ungefähr gehen:

Java:
public int[] setZufall() {

		for (int i = 0; i < zahlen.length; i++) {

			zufall = (Math.random()*49)+1;

			for (int j = 0; j < i; j++) {
				if ((int)zufall == zahlen[j]) {
					zufall = (Math.random()*49)+1;
					j = 0;
				}
			}
			zahlen[i] = (int)zufall;
		}
		return zahlen;
	}

Edit: Das mit um 1 erhöhen war quatsch, dann kann auch 50 bei raus kommen. Neue Zufallszahl generieren wenn Zahl schon vorhanden!
 
Zuletzt bearbeitet:

Kekzii

Mitglied
oder so =)

nur gibt der mir bei den Arrays immer wenn ich sie ausgeben will sowas aus wie " [I@14f8dab "
wobei das für mich unmöglich ist da ja lediglich Zahlen in den arrays stehen

also woher nimmt er die sonderzeichen und Buchstaben
 

srea

Bekanntes Mitglied
Nicht einfach das Array ins sysout schreiben.
Mache eine for-schleife von [c]i=0[/c] bis [c]i<zahlen.length[/c] und gib immer [c]zahlen[/c] aus.
 
Zuletzt bearbeitet:

Kekzii

Mitglied
soweit so gut :D jetz hab ich hier mal ein wenig gezaubert

so wie es ausschaut funktioniert es aber ist sehr langsam oder es liegt an dem jetzigen PC
ihr könnt es ja mal testen und mir eure Meinung sagen :)

Java:
import java.io.IOException;

public class Lotto {
	double zufall;
	int[] zahlen = new int[6];
	int[] einZahlen = new int[6];
	int[] blubb = new int[6];
	int test, zähler;

	public void setZufall() {

		for (int i = 0; i < zahlen.length; i++) {

			zufall = (Math.random() * 49) + 1;

			for (int j = 0; j < i; j++) {

				if ((int) zufall == zahlen[j]) {
					zufall += 1;
					j = 0;
				}
			}

			zahlen[i] = (int) zufall;
		}

	}

	public void zahlenEingabe(int z1, int z2, int z3, int z4, int z5, int z6)
			throws IOException {
		einZahlen[0] = z1;
		einZahlen[1] = z2;
		einZahlen[2] = z3;
		einZahlen[3] = z4;
		einZahlen[4] = z5;
		einZahlen[5] = z6;

		for (int i = 0; i < zahlen.length; i++) {
			test = einZahlen[i];

			for (int k = 0; k < i; k++) {
				if (test == einZahlen[k]) {
					test += 1;
					k = 0;

				}

			}
			einZahlen[i] = test;
		}

	}

	public void vergleichen() {
		for (int z = 0; z < 6; z++) {
			for (int i = 0; i < zahlen.length; i++) {

				for (int k = 0; k < i; k++) {
					if (zahlen[i] == einZahlen[k]) {
						zähler += 1;
						k = 0;
					}
					i= 0;
				}
			}
		}

		for (int j = 0; j < zahlen.length; j++) {
			System.out.print(zahlen[j] + "  ");
		}
		System.out.println("");
		for (int z = 0; z < einZahlen.length; z++) {
			System.out.print(einZahlen[z] + "  ");
		}
		System.out.println("");
		System.out.println("Du hast " + zähler + "Richtige!");

	}

}

und die main

Java:
import java.io.IOException;




public class lotto_test {
	
	public static void main(String[] args) throws IOException{
		Lotto t = new Lotto();
		
		t.setZufall();
		t.zahlenEingabe(1,2,3,4,5,6);
		t.vergleichen();
	}
}
 

srea

Bekanntes Mitglied
Liegt nicht an deinem PC sondern an deiner [c]vergleichen()[/c] Methode. Die Funktionsweise der Methode versteh ich auch nicht wirklich. Würde so doch reichen:
Java:
 public void vergleichen() {
        for (int z = 0; z < 6; z++) {
            for (int i = 0; i < zahlen.length; i++) {
            	if (einZahlen[z] == zahlen[i]) {
            		zähler++;
            	}
            }
        }
 
        for (int j = 0; j < zahlen.length; j++) {
            System.out.print(zahlen[j] + "  ");
        }
        System.out.println("");
        for (int z = 0; z < einZahlen.length; z++) {
            System.out.print(einZahlen[z] + "  ");
        }
        System.out.println("");
        System.out.println("Du hast " + zähler + " Richtige!"); 
    }
Was du machst ist, das du bei jeder richtigen Zahl k wieder auf 0 setzt und somit immer wieder von vorne die innerste for-Schleife durchläufst. Deshalb dauerts laaaaaange!

Und deine [c]setZufall()[/c] Methode würde ich so abändern wie ichs editiert habe in meinem Post.
Java:
public void setZufall() {
 
        for (int i = 0; i < zahlen.length; i++) {
 
            zufall = (Math.random() * 49) + 1;
 
            for (int j = 0; j < i; j++) { 
                if ((int) zufall == zahlen[j]) {
                    zufall = (Math.random() * 49) + 1; // wie im EDIT beschrieben.
                    j = 0;
                }
            } 
            zahlen[i] = (int) zufall;
        } 
    }
 

Kekzii

Mitglied
dein edit habe ich gar nicht gesehen :S

und zum ersten ich habs diese Woche nicht so mit dem denken :D
irgendwie kam ich auf die idee das er nicht alle werte miteinander vergleicht und so falsche ergebnisse zustande kommen

ich werds mal so testen wie du es sagst :)

vielen dank für die Rückmeldung =)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Array mit Zufallszahlen und Divison Java Basics - Anfänger-Themen 7
S Schiffe versenken - Zufallszahlen in einem Array Java Basics - Anfänger-Themen 6
A Dreidimensionales Array mit Zufallszahlen befüllen Java Basics - Anfänger-Themen 18
L Array-Problem/Zufallszahlen Java Basics - Anfänger-Themen 7
V Array mit Zufallszahlen - Anfänger - Hilfe Java Basics - Anfänger-Themen 12
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
B Array erstellen,ausgeben,mit zufallszahlen füllen aber wie ? Java Basics - Anfänger-Themen 1
K Keine doppelten Zufallszahlen im Array Java Basics - Anfänger-Themen 17
F Array mit Zufallszahlen sortieren Java Basics - Anfänger-Themen 7
P Array mit Zufallszahlen von einem Wuerfel Java Basics - Anfänger-Themen 15
B Zufallszahlen in ein Array eintragen. Java Basics - Anfänger-Themen 7
W Zufallszahlen für Array Java Basics - Anfänger-Themen 3
B Int Array mit Zufallszahlen füllen Java Basics - Anfänger-Themen 8
B Zufallszahlen je einmal in Array einfügen Java Basics - Anfänger-Themen 4
H Zufallszahlen generieren Java Basics - Anfänger-Themen 5
H 36 Zufallszahlen die sich nicht wiederholen Java Basics - Anfänger-Themen 27
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
S Hilfe : Unendlich viele Zufallszahlen erstellen? Java Basics - Anfänger-Themen 8
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
S Aus gleichverteilte Zufallszahlen normalverteilte Zufallszahlen generieren ? Java Basics - Anfänger-Themen 1
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
J Klassen Math && Random: wie zufällig sind Zufallszahlen? Java Basics - Anfänger-Themen 19
T Methoden HashSet Objekt mit Zufallszahlen befüllen Java Basics - Anfänger-Themen 3
B Zufallszahlen ohne Wiederholung Java Basics - Anfänger-Themen 10
B Zufallszahlen unabhängig von Intervallen Java Basics - Anfänger-Themen 2
J Ungerade Zufallszahlen in JAVA Java Basics - Anfänger-Themen 31
B Zufallszahlen & Laufzeitmessung (insertionSort) Java Basics - Anfänger-Themen 7
W Zufallszahlen Java Basics - Anfänger-Themen 3
R Arrays Zufallszahlen Java Basics - Anfänger-Themen 10
W 10x10 Feld mit Zufallszahlen erstellen Java Basics - Anfänger-Themen 4
T Zufallszahlen von x bis 80 Java Basics - Anfänger-Themen 10
P Zufallszahlen ohne zahlen einer List Java Basics - Anfänger-Themen 21
G Zufallszahlen Gewichten Java Basics - Anfänger-Themen 3
J Zufallszahlen Häufigkeit Java Basics - Anfänger-Themen 8
L 6stellige Zufallszahlen erzeugen & auf einzigartigkeit prüfen Java Basics - Anfänger-Themen 3
W Java 2 Teams mit Zufallszahlen Java Basics - Anfänger-Themen 2
R Keine doppelten Zufallszahlen Java Basics - Anfänger-Themen 2
G Methoden BigInteger Zufallszahlen erzeugen Java Basics - Anfänger-Themen 5
X write() und Zufallszahlen Java Basics - Anfänger-Themen 2
L Zufallszahlen addieren Java Basics - Anfänger-Themen 6
J Mehrere Zufallszahlen erzeugen, aber keine darf doppelt erzeugt werden - Wie? Java Basics - Anfänger-Themen 5
T Problem mit Zufallszahlen Java Basics - Anfänger-Themen 2
T Matrizzen addition mit zufallszahlen Java Basics - Anfänger-Themen 10
E Zufallszahlen Java Basics - Anfänger-Themen 7
R Probleme mit Zufallszahlen Java Basics - Anfänger-Themen 10
K Datentypen Gleiche Zufallszahlen in verschiedenen Datenstrukturen Java Basics - Anfänger-Themen 6
C Zufallszahlen mit Arrays Java Basics - Anfänger-Themen 8
P Zufallszahlen fuer Lotto generieren Java Basics - Anfänger-Themen 28
L Hilfe, doppelte Zufallszahlen Java Basics - Anfänger-Themen 13
S Wie Zufallszahlen in txt speichern? Java Basics - Anfänger-Themen 4
F Aus Regulären Ausdrücken Zufallszahlen bilden Java Basics - Anfänger-Themen 6
M Zufallszahlen mit Random Java Basics - Anfänger-Themen 4
S Summe von Zufallszahlen Java Basics - Anfänger-Themen 9
B Zufallszahlen Java Basics - Anfänger-Themen 5
M Zufallszahlen aus einem bestimmten Intervall Java Basics - Anfänger-Themen 5
N Normalverteilte Zufallszahlen mit benutzerdefiniertem/r EW/Var Java Basics - Anfänger-Themen 5
C Zufallszahlen Problem Java Basics - Anfänger-Themen 6
C Zufallszahlen Java Basics - Anfänger-Themen 3
C Frage zur Generierung von Zufallszahlen Java Basics - Anfänger-Themen 9
G Problem mit Zufallszahlen Java Basics - Anfänger-Themen 6
G Zufallszahlen die alles einmal vorkommen Java Basics - Anfänger-Themen 15
G Lotto Zufallszahlen zählen Java Basics - Anfänger-Themen 3
A Zufallszahlen generieren Java Basics - Anfänger-Themen 2
A Problem mit dem Zufallszahlen-Generator Java Basics - Anfänger-Themen 17
J Zufallszahlen einmalig ausgeben Java Basics - Anfänger-Themen 6
G Zufallszahlen ohne doppelten Wert Java Basics - Anfänger-Themen 5
R Zufallszahlen mit Java Java Basics - Anfänger-Themen 11
N Zufallszahlen wiederholungslos erzeugen Java Basics - Anfänger-Themen 8
G Zufallszahlen erraten Java Basics - Anfänger-Themen 8
K zufallszahlen int / double, gerade / ungerade problem . Java Basics - Anfänger-Themen 2
X Lotto Zufallszahlen mit ArrayList erstellen Java Basics - Anfänger-Themen 3
M Zufallszahlen fertig! aber nice to have noch offen Java Basics - Anfänger-Themen 5
M generierung von zufallszahlen Java Basics - Anfänger-Themen 4
B Zufallszahlen erzeugen die nicht gleich sind ;/ Java Basics - Anfänger-Themen 10
M Zufallszahlen Java Basics - Anfänger-Themen 3
B Satz Zufallszahlen ohne Wiederholung Java Basics - Anfänger-Themen 14
G Zufallszahlen Java Basics - Anfänger-Themen 4
N ganzzahlige Zufallszahlen Java Basics - Anfänger-Themen 13
H Zufallszahlen Java Basics - Anfänger-Themen 2
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
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

Ähnliche Java Themen

Neue Themen


Oben