Speichern von Objekten..

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

  • Speichern von Objekten..

    Ich bin gerade dabei auf Konsolenebene ein Kniffelspiel zu schreiben...

    Hab auch schon meinen Würfel erstellt. Problem ist im Moment, dass ich ja bis zu 5 Würfel abspeichern möchte. Nur wie? Ich hab zwar was von Vektoren gelesen, aber wie genau wende ich diese an? :( Ich krieg das echt nicht gebacken..

    Irgendwer der mir da helfen könnte? :)

    MfG

    One ^^

    //edit
    Ich glaub ich habs jetzt doch hinbekommen... Aber bitte Topic offen lassen :) Wenn ich dazu noch ne Frage haben sollte, schreib ich nochmal hier rein ^^
  • Ok die Lösung ist wieder weg... Muss irgendwas jetzt doch noch falsch gemacht haben... Trotz Random gibt er mir alles nur noch Null aus... jeden Würfel :(

    Klasse Spielbrett

    Quellcode

    1. class Spielbrett
    2. {
    3. public static void main(String args[])
    4. {
    5. int becher[] = new int[5];
    6. //Erzeugen meiner 5 Würfel
    7. Wuerfel w1 = new Wuerfel();
    8. Wuerfel w2 = new Wuerfel();
    9. Wuerfel w3 = new Wuerfel();
    10. Wuerfel w4 = new Wuerfel();
    11. Wuerfel w5 = new Wuerfel();
    12. //Testausgabe der Würfel (Random)
    13. System.out.println("Würfel1: ");
    14. w1.getZahl();
    15. System.out.println("Würfel2: ");
    16. w2.getZahl();
    17. System.out.println("Würfel3: ");
    18. w3.getZahl();
    19. System.out.println("Würfel4: ");
    20. w4.getZahl();
    21. System.out.println("Würfel5: ");
    22. w5.getZahl();
    23. //Speichern meiner Würfel
    24. System.out.println("------------------------------------------");
    25. becher[0] = w1.getZahl();
    26. becher[1] = w2.getZahl();
    27. becher[2] = w3.getZahl();
    28. becher[3] = w4.getZahl();
    29. becher[4] = w5.getZahl();
    30. //Ausgabe der gespeicherten Würfel
    31. System.out.println("------------------------------------------");
    32. for (int x=0;x<becher.length;x++)
    33. System.out.print(becher[x] + " ");
    34. }
    35. }
    Alles anzeigen


    Klasse Würfel

    Quellcode

    1. import java.util.Random;
    2. public class Wuerfel
    3. {
    4. private Random augenzahl = new Random();
    5. private int zahl;
    6. //Methode die der Würfel ausführt... was wohl? Eine Randomzahl
    7. //von 1 - 6 erzeugen :P
    8. public void setZahl(int zahl)
    9. {
    10. zahl = augenzahl.nextInt(6)+1;
    11. }
    12. public int getZahl()
    13. {
    14. return zahl;
    15. }
    16. }
    Alles anzeigen


    Guckt euch das mal an, ich krieg die Krise ^^

    //edit
    Er scheint mir bei Random irgend nen Mist auszugeben.. Warum auch immer, sonst hats doch auch immer funktioniert :(
  • Als kleiner Tip du kannst von allen Objekten ein Array erzeugen

    Quellcode

    1. Wuerfel[] w_array = new Wuerfel[5];
    2. w_array[0] = new Wuerfel();
    3. ...


    Als nächstes kannst du für sowas natürlich auch nen Vektor oder eine Liste verwenden, was aber nur dann interessant ist, wenn du nicht genau weisst, wie viele Objekt du reinschreiben willst.

    Quellcode

    1. LinkedList list = new LinkedList();
    2. list.add(new Wuerfel());
    3. ...
    4. Wuerfel w = (Wuerfel)list.get(0)


    LinkedList ist nur ein Beispiel, es gibt noch einige andere Listen bzw Vektoren

    Wenn du genau weisst, dass du nur eine bestimmte Art von Objekten speicherst

    Quellcode

    1. LinkedList<Wuerfel> list = new LinkedList<Wurfel>();
    2. list.add(new Wuerfel());
    3. ...
    4. //Nicht sinnvoll, es geht nur um die Benutzung
    5. for(int i = 0; i < list.size(); i++){
    6. Wuefel w = list.get(i);
    7. }


    So nun zu deiner Wuerfel-Klasse
    Ist es nicht ein wenig kompliziert, erst mit setZahl(int zahl) sich ne zufällige Zahl zu generien lassen und danach mit getZahl() sie sich zu holen. Mal ganz davon abgesehen, dass der Übergabeparameter bei setZahl nie benutzt wird.

    Geh ich recht in der Annahme, dass das ganze bei dir nicht funktioniert??

    Du übergibst setZahl eine Variable zahl. Dieser Variablen weist du dann einen Wert zu. Das ist aber nicht deine Klassen-Variable. Die bleibt immer 0.
    Ein this sollte abhilfe schaffen

    Quellcode

    1. this.zahl = augenzahl.nextInt(6)+1;


    aber du solltest dir überlegen, ob du diese Methode brauchst oder es nicht besser nur in getZahl() machst.

    mfg
  • wäre praktisch gewesen wenn du geschrieben hättest, was du geändert hast, aber was soll.

    Hier mein Vorschlag:

    Quellcode

    1. public class Wuerfel
    2. {
    3. private Random augenzahl = new Random();
    4. public int getZahl()
    5. {
    6. return augenzahl.nextInt(6) + 1;
    7. }
    8. }


    oder mit deinem Vorschlag

    Quellcode

    1. import java.util.Random;
    2. public class Wuerfel
    3. {
    4. private Random augenzahl = new Random();
    5. private int zahl;
    6. //Methode die der Würfel ausführt... was wohl? Eine Randomzahl
    7. //von 1 - 6 erzeugen Razz
    8. public void setZahl()
    9. {
    10. this.zahl = augenzahl.nextInt(6)+1;
    11. }
    12. public int getZahl()
    13. {
    14. return augenzahl.nextInt(6) + 1;
    15. }
    16. }
    Alles anzeigen
  • Ok.. ich hab aus Testzwecken deinen Quelltext für den Würfel übernommen.

    Im folgenden mein "neuer" Spielbrett-Quelltext:

    Quellcode

    1. class Spielbrett
    2. {
    3. public static void main(String args[])
    4. {
    5. Wuerfel[] w_array = new Wuerfel[5];
    6. w_array[0] = new Wuerfel();
    7. //Erzeugen meiner 5 Würfel
    8. Wuerfel w1 = new Wuerfel();
    9. Wuerfel w2 = new Wuerfel();
    10. Wuerfel w3 = new Wuerfel();
    11. Wuerfel w4 = new Wuerfel();
    12. Wuerfel w5 = new Wuerfel();
    13. //Testausgabe der Würfel (Random)
    14. System.out.println("Würfel1: ");
    15. w1.getZahl();
    16. System.out.println("Würfel2: ");
    17. w2.getZahl();
    18. System.out.println("Würfel3: ");
    19. w3.getZahl();
    20. System.out.println("Würfel4: ");
    21. w4.getZahl();
    22. System.out.println("Würfel5: ");
    23. w5.getZahl();
    24. //Speichern meiner Würfel
    25. System.out.println("------------------------------------------");
    26. w_array[0] = w1;
    27. w_array[1] = w2;
    28. w_array[2] = w3;
    29. w_array[3] = w4;
    30. w_array[4] = w5;
    31. }
    32. }
    Alles anzeigen


    MfG

    One ^^

    //edit
    Das Problem liegt einfach daran, dass der Quelltext für mich logisch aussieht und der Compiler keine Fehler ausgiebt. Ich weiß nicht was ich noch ändern kann damit es geht ^^;;
  • Ähm du hast noch nicht so ganz den Sinn und Zweck eines Arrays verstanden ;)

    Quellcode

    1. Wuerfel[] w = new Wuerfel[];
    2. //Würfel 1
    3. w[0] = new Wuerfel();
    4. //Würfel 2
    5. w[1] = new Wuerfel();
    6. //Würfel 3
    7. w[2] = new Wuerfel();
    8. //Würfel 4
    9. w[3] = new Wuerfel();
    10. //Würfel 5
    11. w[4] = new Wuerfel();
    12. for(int i = 0; i < w.length; i++){
    13. System.out.println("Würfel" + i + ": ");
    14. w[i].getZahl();
    15. }
    Alles anzeigen