Feld unter Ausschlss eines Index in anderes Feld kopieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Feld unter Ausschlss eines Index in anderes Feld kopieren

    Guten Tag,

    ich versuche ein Programm zu schreiben, welches Lottozahlen generiert. Die Aufgabe hatte folgenden Vorgaben: 6 aus 49 und keine Zufallszahl darf verworfen werden.
    Idee: Ich nehme ein Feld und schreiben alle Werte hinein --> 1- 49. Die Zufallszahl wird bestimmt und die verbleibenden Werte werden in ein neues Feld geschrieben.
    Habe dafür schon eine Funktion, diese führt meine gewünschte Operation genau einmal ordentlich aus, dann gibt es Probleme mit dem Index und die Zufallszahl wird nicht mehr beachtet, sondern die alte Zufallszahl wird nur um 1 inkrementiert.

    Quellcode

    1. //
    2. // B06A02.java
    3. //
    4. //
    5. // Created by Tetris on 20.06.10.
    6. // Copyright 2010 MAIA arts.. All rights reserved.
    7. //
    8. public class B06A02 {
    9. private static int zufallszahl(int zzmax){
    10. int zufallszahl_ = 0;
    11. zufallszahl_ = (int) (Math.random()*zzmax+1);
    12. return zufallszahl_;
    13. }
    14. private static void neuesFeld(int feld1[], int feld2[],int gewinnzahlen_[]){
    15. for (int i = 0,g=1; i < feld2.length; i++,g++){
    16. if (g != gewinnzahlen_[0]) //solange die gewinnzahl sich von g unterscheidet einfach fuellen mit selben werten wie feld1
    17. feld2[i] = feld1[i];
    18. if(g >= gewinnzahlen_[0]) //wenn aber die gewinnzahl(index) erreicht ist muss diese ueberspurngen werden
    19. feld2[i] = feld1[i]+1;
    20. }
    21. //return feld2;
    22. }
    23. private static void feldausgeben(int feld[]){
    24. for(int a = 0; a< feld.length; a++){
    25. System.out.println("Feld: " + feld[a]);
    26. }
    27. System.out.println("Feldlaenge: " + feld.length);
    28. }
    29. private static int [] gewinnzahlen(){
    30. int gewinnzahlen_[] = new int [6];
    31. int speicher1[] = new int[49];
    32. int speicher2[] = new int[48];
    33. int speicher3[] = new int[47];
    34. int speicher4[] = new int[46];
    35. int speicher5[] = new int[45];
    36. int speicher6[] = new int[44];
    37. int speicher7[] = new int[43]; //fuer jede anzahl der noch vorhandenen lottozahlen ein feld
    38. int maxzz = 48; //wird fuer die maximale zufallszahl gebraucht
    39. int gewinnindex = 0;
    40. for (int i = 0,g= 1;i < speicher1.length;i++,g++){//Fuellen mit den zahlen 1-49
    41. speicher1[i] = g;
    42. }
    43. gewinnzahlen_[0] = zufallszahl(maxzz);
    44. //---TEST
    45. /*System.out.println("Gewinnzahl: " + gewinnzahlen_[0]);
    46. System.out.println("Gewinnzahl: " + gewinnzahlen_[1]);
    47. feldausgeben(speicher2);
    48. feldausgeben(speicher3);*/
    49. //Wieso funktioniert das nur beim erstern Feld?
    50. neuesFeld(speicher1,speicher2,gewinnzahlen_);
    51. System.out.println("Gewinnzahl: " + gewinnzahlen_[0]);
    52. feldausgeben(speicher2);
    53. maxzz = maxzz - 1;
    54. /*gewinnzahlen_[1] = zufallszahl(maxzz);
    55. neuesFeld(speicher2,speicher3, gewinnzahlen_);
    56. System.out.println("Gewinnzahl: " + gewinnzahlen_[1]);
    57. feldausgeben(speicher3);
    58. maxzz = maxzz - 1;*/
    59. return gewinnzahlen_;
    60. }
    61. public static void main(String args[]){
    62. gewinnzahlen();
    63. }
    64. }
    Alles anzeigen



    Stehe für Fragen natürlich offen, würde mich freuen, wenn das Problem irgendwie zu lösen ist. Ich habe erst vermutet es liegt an der Zeile: feld2 = feld1[i]+1;
    Allerdings habe ich diese Idee dann verworfen, weil das neue Feld damit kein Problem haben sollte.
    Ob die Idee grundlegend gut ist, um diese Problemstellung zu lösen, sei bis ich das kleine Problem hier gelöst habe, erst einmal dahingestellt.

    Liebe Grüße Tetris