Zufallszahlen mit Java Fehlermeldung

Gast #3191903
Lesenswert?

Hallo, ich möchte mit Java Zufallszahlen(Lottozahlen) generieren. Also 6 
Zahlen zwischen 1 und 49 und diese dann auch ausgeben können
hier mal der Code. Das Compilieren gibt keine Syntax-Fehler
Allerdings wenn ich die Methode generiere aufrufe gibt es die 
Fehlermeldung
java.lang.NullPointerExeption in der Zeile wo die Zahlen in den zahlen 
vektor geschrieben werden also in der Methode generiere 2. Zeile. Diese 
Meldung tritt wohl auf wenn was null ist allerdings kann hier doch 
nichts null sein ich generiere doch Zahlen zw. 1 und 49 oder?
So recht weiß ich nicht was falsch ist bzw. warum diese Meldung kommt.

Kann mir jemand helfen?
1
public class Lottozahlen
2
{
3
    private Random zufzahl;
4
    private int[] zahlen;
5

6
    public Lottozahlen()
7
    {
8
        zufzahl = new Random();
9
    }
10
    public int[] generiere()
11
    {
12
        for(int i=0; i<6; i++){
13
            zahlen[i] = 1 + zufzahl.nextInt(49);} //liefert zahl zw.0-48 +1
14
        return zahlen;
15
    }
16
    public void ausgeben()
17
    {
18
        for(int i=0;i<6;i++){
19
            System.out.println(zahlen[i]);}
20
    }
21
}

Vielen Dank!
Gruß Tom
#3191924
Lesenswert?

Tom schrieb:

> Meldung tritt wohl auf wenn was null ist allerdings kann hier doch
> nichts null sein ich generiere doch Zahlen zw. 1 und 49 oder?

Die generierten Zahlen sind auch nicht das Problem.
Aber du hast noch kein Array. Das ist null.

Auch ein Array muss in Java mit new erst mal erzeugt werden.

>     public Lottozahlen()
>     {
>         zufzahl = new Random();
          zahlen = new int[6];

>     }


Für die Zukunft merken.
Eine Null-Pointer exception ist immer ein Hinweis darauf, dass es ein 
Objekt nicht gibt, welches es in der Verwendung eigentlich schon geben 
sollte - das also irgendwo ein new fehlt.
In deinem konkreten Fall ist das eben das Array.
Gast #3191959
Lesenswert?

Ok, das geht jetzt. Danke euch. Wenn ich nun ausgeben aufrufen() aufrufe 
werden Zahlen ausgegeben(so wies ja auch sein sollte) allerdings, kommt 
die Meldung: java.lang.ArrayIndexOutOfBoundsException: 6

Was hat es damit auf sich?
#3191976
Lesenswert?

Tom schrieb:
> allerdings, kommt
> die Meldung: java.lang.ArrayIndexOutOfBoundsException: 6

Denk mal nach. Welchen Index darf ein Array mit 6 Elementen haben, wenn 
der erste Index immer eine 0 ist.

Die java Exceptions liefern dir eigenlich immer eine Zeilennummer. Damit 
kann man im Allgemeinen den fehler schon gut eingrenzen.
Ausserdem kann man prima debuggen.
Versuchs mal.
Gast #3191997
Lesenswert?

Udo Schmitt schrieb:
> Tom schrieb:
>> allerdings, kommt
>> die Meldung: java.lang.ArrayIndexOutOfBoundsException: 6
>
> Denk mal nach. Welchen Index darf ein Array mit 6 Elementen haben, wenn
> der erste Index immer eine 0 ist.
>
> Die java Exceptions liefern dir eigenlich immer eine Zeilennummer. Damit
> kann man im Allgemeinen den fehler schon gut eingrenzen.
> Ausserdem kann man prima debuggen.
> Versuchs mal.

Markus M. schrieb:
> Die Meldung will dir sagen, dass die Laufvariable "i" den Wert 6
> enthält. Du darfst aber bei einem Array mit 6 Elementen nur von "0" bis
> "5" zählen. 6 -> "Out of Range"
>
> Grüsse

ja nur ich habe doch in der for-Schleife i von 0 bis 5 for(int 
i=0;i<6;i++){...} es kommt also gar keine 6 vor
Gast #3193568
Lesenswert?

Εrnst B✶ schrieb:
> Tom schrieb:
>> Problem ist mittlerweile behoben!
>
> Und war soooo peinlich, dass du es uns lieber erspart hast, oder?

Peinlich finde ich eher andere Dinge...

Läubi .. schrieb:
> Solche "Probleme" spart man sich übrigens wenn man gleich foreach
> verwendet (nicht nur bei Arrays):
> http://docs.oracle.com/javase/1.5.0/docs/guide/lan...

Hab ich nachher auch bemerkt. Ist inzwischen mit foreach gemacht worden. 
Aber  Danke für den Hinweis!
Gast #3201888
Lesenswert?

Tom schrieb:
> Εrnst B✶ schrieb:
>> Tom schrieb:
>>> Problem ist mittlerweile behoben!
>>
>> Und war soooo peinlich, dass du es uns lieber erspart hast, oder?
>
> Peinlich finde ich eher andere Dinge...

Ich denke er will damit auf was anderes Hinweisen:

Es gibt nix Schlimmeres als wenn man bei der Suche nach der Lösung für 
sein Problem einen Thread findet, der exakt das gleiche Problem 
behandelt das man selbst hat aber dann mit: "Habs hinbekommen" endet.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren