Hilfe bei Roulette Projekt

Hi
Ich schreibe gerade mein erstes eigenständiges Java Projekt.
Ich möchte eine Roulette Simulator erstellen. Aktuell erstell ich die Klasse Bullet.
Sie besitzt nur die Attribute int number und String color.
Aktuell sieht sie so aus.
Java:
package roulette;

public class Bullet {
    private int number;
    private String colour;

    public Bullet() {
        number = 0;
        colour = null;
    }

    public int getNumber() {
        return number;
    }

    public String getColour() {
        return colour;
    }

  

    public void roll() {
        number = (int) (Math.random() * 37);
        if (number == 1 || number == 3 || number == 5 || number == 7 || number == 9 || number == 12 || number == 14
                || number == 16 || number == 18 || number == 19 || number == 21 || number == 23 || number == 25
                || number == 27 || number == 30 || number == 32 || number == 34 || number == 36) {
            colour = "red";
        } else if (number == 0) {
            colour = "green";
        } else {
            colour = "black";
        }

    }
  
    public boolean isEven(){
        if (number % 2 == 0 && number != 0){
            return true;
        } else {
            return false;
        }
    }
  
    public boolean isOdd(){
        if (number % 2 != 0){
            return true;
        }else {
            return false;
        }
    }

}

Ist es überhaupt sinnvoll Odd oder Even in zwei Methoden abzufragen? Oder sollte ich dies eher mit einer Stirng variabeln machen?
Java:
    public String even_odd() {
        if (number == 0){
            return null;
        } else if (number % 0 == 0){
            return "even";
        }else {
            return "odd";
        }
    }
 
Wenn du das eine hast, kannst du leicht mit einer Negation das gewünschte Ergebniss liefern. So wie etwa String.isEmpty(). Wenn du wissen willst ob es nicht leer ist, dann machst du einfach boolean nonEmpty = !string.isEmtpy();.
 
Ist es überhaupt sinnvoll Odd oder Even in zwei Methoden abzufragen? Oder sollte ich dies eher mit einer Stirng variabeln machen?
Mir gefällt die erste Variante besser.

Wenn du das eine hast, kannst du leicht mit einer Negation das gewünschte Ergebniss liefern. So wie etwa String.isEmpty(). Wenn du wissen willst ob es nicht leer ist, dann machst du einfach boolean nonEmpty = !string.isEmtpy();.
Allerdings ist isEven() im Roulette-Sinne nicht äquivalent zu !isOdd().
 
Ich würde die Variante mit nur einer Methode bevorzugen. Die gibt dann einen von drei Zuständen zurück: z.B. "Even", "Odd", null. Als Rückgabetyp kann man durchaus einen String nehmen. (Für einen Anfänger vermutlich am einfachsten). Wenn man es dann irgendwann einmal weiter 'verbessern' möchte, würde sich hier stattdessen ein Enum anbieten. Ist letztenendes wohl Geschmacksache.
 
Hier bekommt man ja wirklich schnell Hilfe. 🙂
Enum kenne ich bisher noch nicht, aber scheint mir jetzt auf den ersten Blick was mit aufzählungen
zu sein.
Code:
enum odds
{
    2, 4, 6, 8, 10,...
}
sowas in der Richtung?
Hätte ich dann nicht magic Numbers im code? ES kommen ja noch einige Methoden hinzu (dutzend, drittel, niedrig-hoch,...).
 
Ich könnte ja auch die String Variablen für die verschiedenen Eigenschaften (odd etc.) in der roll() methode initialisieren? So wie ich es schon mit colour gemacht habe(?).
Java:
public void roll() {
        number = (int) (Math.random() * 37);
        if (number == 1 || number == 3 || number == 5 || number == 7 || number == 9 || number == 12 || number == 14
                || number == 16 || number == 18 || number == 19 || number == 21 || number == 23 || number == 25
                || number == 27 || number == 30 || number == 32 || number == 34 || number == 36) {
            colour = "red";
        } else if (number == 0) {
            colour = "green";
        } else {
            colour = "black";
        }
        if (number == 0){
            highLow = null;
        } else if (number < 19){
            highLow = "low";
        } else {
            highLow = "high";
        }

    }

Wie schreibe ich eigentlich inline Code?
 
Zuletzt bearbeitet:
Hier bekommt man ja wirklich schnell Hilfe. 🙂
Enum kenne ich bisher noch nicht, aber scheint mir jetzt auf den ersten Blick was mit aufzählungen
zu sein.
Code:
enum odds
{
    2, 4, 6, 8, 10,...
}
sowas in der Richtung?
Hätte ich dann nicht magic Numbers im code? ES kommen ja noch einige Methoden hinzu (dutzend, drittel, niedrig-hoch,...).
Jain, man kann es schon als Aufzählung sehen, es ist aber mehr als das.
Man würde den Enum nicht als Aufzählung der Zahlen, sondern als Aufzählung der möglichen Zustände sehen.
Also ein Enum der Even, Odd und Null(?) darstellt, ein anderer für Rot, Grün, Schwarz, usw.
Im wesentlichen als Ersatz für String?(oder auch int)-Konstanten - nicht als Ersatz für die wirklichen Werte.
 

Zurück
Oben