Heizung

Ich schreibe gerade an einem Projekt und weiß nicht, wie ich weiter machen soll. Ich habe eine Heizung programmiert, wo man die Stufen erhöhen kann. Jetzt möchte ich für diese Stufen eine Temperatur in einem bestimmten Bereich ausgeben (Bsp: Stufe 4: 20-25 Grad). Dann wird eine Zufallszahl aus diesem Bereich gezogen.

Java:
public class HeizungmitStufe
{
   private int Stufe;
   int min;
   int max=5;
   int schrittweite;
 
    public HeizungmitStufe()
    {
        Stufe=2;
        schrittweite=1;
    }
    public void waermer()
    {
      Stufe=Stufe+1;
            if (Stufe>max)
            {
                Stufe=-1;
                System.out.println("Die Stufe kann nicht mehr erhöht werden. Die Maximumstufe 5 wurde erreicht");
            }
    }
    public void kaelter()
    {
        Stufe=Stufe-1;
            if (Stufe<min)
            {
                Stufe=+1;
                System.out.println("Die Stufe kann nicht mehr verringert werden. Die Minimumstufe 0 wurde erreicht");
            }
    }
    public int gibStufe()
    {
        return Stufe;
    }
    public void parameterAusgeben()
    {
        System.out.println("Die aktuelle Stufe beträgt: " +Stufe);
        System.out.println("Die maximale Stufe beträgt: " +max);
        System.out.println("Die minimale Stufe beträgt: " +min);
       
    }
   public void Temperaturausgeben()
   {
   //hier bitte die Hilfe
   }

}
 

Viktim

Bekanntes Mitglied
Hmm mit Math.random() kannst du dir eine Zufallszahl zwischen 0 und 1 holen.
Damit könntest du dann die Temperatur pro Stufe ermitteln.
Hiermit zumbeispiel könntest du dir eine Zahl zwischen 20 und 25 generieren lassen (inkl. 20 und 25)
Java:
int zufallsZahl = (int) (Math.random() * 6 + 20);
Und so kannst du das einfach überall machen.
Das hinter dem * legt hier die größe des Bereichs fest also hier 6 Zahlen (20 - 25) und die 20 hinter dem + ist die Verschiebung, also dass die Zahlen die Ausgegeben werden bei 20 anfangen ;)
 

X5-599

Top Contributor
Alternativ nehme ich zumeist ein eigenes Objekt der Random Klasse.

Code:
Random r = new Random();
int zufall = r.nextInt(26); //Zufallszahl im Bereich 0 (inklusive) und 26 (exklusive). Also 0-25.

Natürlich nutzt das Math.random ebenfalls diese Random Klasse, aber ich finde der obere Code (definierte Bereich der Zufallszahlen) ist leichter ersichtlich. Ist natürlich Geschmacksache.
 

X5-599

Top Contributor
Naja ist eher ein implizierter Bereich. Also schon nicht viel anders als du es für das Math.random erklärt hast.
Bei meiner Version muss man halt wissen, dass Random#nextInt(n) immer eine Zahl zurückgibt, die zwischen 0 (inklusive) und n (exklusive) liegt.
 

X5-599

Top Contributor
Wenn man einen direkten Bereich angeben möchte sieht es dem Math.random sogar noch ähnlicher. (Nicht von mir erdacht; habs gerade gegoogelt)
Das erzeugt Zahlen von min (inklusive) bis max (inklusive)
Code:
int randomNumber = random.nextInt(max + 1 - min) + min;

Persönlich würde ich da eine Utility Klasse oder so machen und eine Methode anbieten wie:
Code:
public static int getRandomNumber(int min, int max)
{
  Random random = new Random();
  return  random.nextInt(max + 1 - min) + min
}

Wobei es wohl angebrachter wäre das Random Objekt nur einmal zu erzeugen und als Instanzvariable zu halten. Dann müsste man die Methode halt nicht static machen...
 

Viktim

Bekanntes Mitglied
Jo, dann war meins ja aber auch nicht totaaaal umständlich gedacht :D
Aber stimmt schon, deins sieht schon schöner aus ;)
 

Neue Themen


Oben