Zufallszahlen mit Java Fehlermeldung

Gast #3191903
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
Gast
Tom schrieb:
> So recht weiß ich nicht was falsch ist bzw. warum diese Meldung kommt.

ich kenn java jetzt nicht genau, aber vermutlihc musst du die größe von 
dem Array

private int[] zahlen;

festlegen.

Du kannst nicht einfach dort etwas reinscheiben.
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.
Ein Array gehört in Java nicht mehr zu den Elementaren Datentypen. Es 
wird schon als Objekt bewerte. Objekte werden mit "new" angelegt.

Ein Array kann aber mit Literalen Werten initialisiert werden, dann ist 
kein "new" notwendig.

Grüsse
Gast
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?
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
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
Ε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
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.