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:
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 siehe nächste Antwort
EDIT3: Ja, die Arraygrenzen, hatte ich ja weiter oben schon gesagt. Testen wäre eine Möglichkeit
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].
List<Integer> list =newArrayList<Integer>();for(int i =1; i <=49; i++){
list.add(i);}
java.util.Collection.shuffle(list);int[] zahlen =newint[6];for(int i =0; i < zahlen.length; i++){
zahlen[i]= list.remove(0);}
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
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
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
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
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
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:
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
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:
publicvoidvergleichen(){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:
publicvoidsetZufall(){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;}}
und zum ersten ich habs diese Woche nicht so mit dem denken
irgendwie kam ich auf die idee das er nicht alle werte miteinander vergleicht und so falsche ergebnisse zustande kommen