Java UND bzw ODER Verknüpfung?

BP_BLADE

Lt. Junior Grade
Registriert
Juni 2004
Beiträge
316
Ich lerne momentan Java mit BlueJ und da soll ich eine Methode erstellen.

In dieser Methode soll der Bertag den man eingibt zwischen 0 und 5 sein. Wenn dies nicht der Fall ist, dann sollte eine Fehlermeldung erscheinen.

Hatte es mit einer doppelten if-Anweisung versucht aber die klappt nicht.

Dann hatte ich es so probiert, aber klappt auch nicht.

Code:
    public void setzeSchrittweite(int neueSchrittweite)
    {
        if(neueSchrittweite = < 5 | >0)
        {
            temperatur = neueSchrittweite;
        }
        else
        {
             System.out.println("Temperatur muss zwischen 0°C und 5°C sein");
        }
        
    }

Könnte mir bitte jemand helfen?

Mfg
 
Hallo!


So sollte es gehn:

Code:
    public void setzeSchrittweite(int neueSchrittweite)
    {
        if(neueSchrittweite  <= 5 && neueSchrittweite  >= 0)
        {
            temperatur = neueSchrittweite;
        }
        else
        {
             System.out.println("Temperatur muss zwischen 0°C und 5°C sein");
        }
        
    }

Wenn es echt kleiner bzw echt größer sein soll:


Code:
    public void setzeSchrittweite(int neueSchrittweite)
    {
        if(neueSchrittweite  = 5 && neueSchrittweite  > 0)
        {
            temperatur = neueSchrittweite;
        }
        else
        {
             System.out.println("Temperatur muss zwischen 0°C und 5°C sein");
        }
        
    }

Und wenne s eine Oder-Verknüpfung sein soll:


Code:
    public void setzeSchrittweite(int neueSchrittweite)
    {
        if(neueSchrittweite  <= 5 || neueSchrittweite  >= 0)
        {
            temperatur = neueSchrittweite;
        }
        else
        {
             System.out.println("Temperatur muss zwischen 0°C und 5°C sein");
        }
        
    }
 
Vielen Dank Pelesit!

Damit hast du mir nach langen, verzweifeltem Überlegen und googlen endlich geholfen :)
 
tja, da fehlt wohl grundlegendes wissen. deine if-abfrage ist ja wohl eine katastrophe. :D was machst du denn nun? zuweisen, vergleichen oder doch was anderes?

= weist etwas zu
< > vergleicht
| logisches oder

eine if-abfrage verlangt immer einen wahrheitswert (boolean), was du durch deine bedingung nicht hinbekommst. denk doch mal logisch nach: was willst du vergleichen? abfragen sind wie fragen - wie ist etwas. ist das wetter gut? ist das wetter schlecht? ist es hell? ist es dunkel? du musst in einer frage also einen satz bilden, so auch bei abfragen.

ein vergleich sieht z.b. immer so aus:
<zu vergleichender wert> <vergleichoperator> <vergleichswert > [<logischer operator> <zvglw> <vo> <vw> [<lo> ...]]

pass es also so an, dass es genau in die hier stehende form passt.

entweder:
Code:
if( neueSchrittweite > 0 && neueSchrittweite < 5 ) ...
oder
Code:
if( neueSchrittweite < 1 || neueSchrittweite > 4 ) ...

innerhalb eines bereichs prüft man mit einem und, außerhalb mit einem oder.

edit:

@ pelesit:

Code:
if(neueSchrittweite  = 5 && neueSchrittweite  > 0)
ergibt semantisch nichts (wenn es java nicht als syntaxfehler ansieht)
Code:
if(neueSchrittweite  <= 5 || neueSchrittweite  >= 0)
semantisch ebenso falsch, da die ausgabe dann nicht zum else zweig passt.

@ bp_blade:

akzeptier nich alles was dir vorgesetzt wird, sondern überprüf es erst mal. zumindest hat es den anschein, dass du nicht gewillt bist dies zu machen/begreifen, sondern einfach nur musst.
 
Zuletzt bearbeitet:
ich habe den esrten Code von pelesit überprüft und es mach genau das was ich verlangt habe. ich habe es auch mehrmal getestet.

Hier mal der komplette code

Code:
/**
 * Die Klasse Heizung soll für die Steuerung einer Heizung dienen.
 * Sie soll über die notwendigen Mittel verfügen, um die Solltemperatur 
 * der Heizung auf einen gewünschten Wert einzustellen
 * 
 * @author (Ihr Name) 
 * @version (eine Versionsnummer oder ein Datum)
 */
public class Heizung
{
    // die Solltemperatur der Heizung
    int temperatur;
    int minTemp;
    int maxTemp;
    int schrittweite;

    /**
     * Konstruktor für Objekte der Klasse Heizung
     */

    public Heizung()
    {
      temperatur = 20;
      minTemp = 0;
      maxTemp = 30;
      schrittweite = 2;
    }
    
    /**
     * Temperaturen ändern
     */
    
    //Temperatur erhöhen um X Grad
    public void waermer()
    {
        if(temperatur < maxTemp)
        {
            temperatur = temperatur + schrittweite;
        }
        else
        {
             System.out.println("Temperatur zu hoch");
        }
    }
    
    
    //Temperatur um X Grad verringern
    public void kuehler()
    {
        if(temperatur > minTemp)
        {
            temperatur = temperatur - schrittweite;
        }
        else
        {
             System.out.println("Temperatur zu niedrig");
        }
    }
    
    //Schrittweite ändern
    public void setzeSchrittweite(int neueSchrittweite)
    {
        if(neueSchrittweite  <= 5 && neueSchrittweite  >= 0)
        {
            schrittweite = neueSchrittweite;
        }
        else
        {
             System.out.println("Temperatur muss zwischen 0°C und 5°C sein");
        }
        
    }
    
    //aktuelle Temperatur anzeigen
    public int TemperaturAusgabe()
    {
       return temperatur;
    }
}

[EDIT]Achso zu dem grundlegendem Verständnis: Ich kenne Java seit ca 3 Wochen also kann ich noch nicht so viel drüber wissen.
 
Also


if(neueSchrittweite <= 5 || neueSchrittweite >= 0)

das geht auf jedne fall ist doch einfach ein kleinergleich oder größer gleich...
Sollte nur als Beispiel dienen wie man Oder verwendet, soll nicht mit dem Codeinhalt zu tun haben


beim obigen BSP also if(neueSchrittweite = 5 && neueSchrittweite > 0)

habe ich das falsche Zeichen gelöscht. Statt dem = sollte ein < sein.
 
Zuletzt bearbeitet:
Pelesit schrieb:
if(neueSchrittweite <= 5 || neueSchrittweite >= 0)
ist falsch, denn -1 oder 6 würde dort genauso funktionieren, denn -1 ist kleiner gleich 5 aber nicht größer gleich 0. bei einem oder vergleich muss lediglich ein wert wahr sein und schon ist der rest egal. also entweder dies mit einem und verknüpfen oder, wenn du unbedingt ein oder willst, die operation (< und >) umtauschen.
 
Ja es war mi schon klar dass es keinen Sinn macht wenn man berücktsichtigt was da Programm können soll, aber es sollte als Beispiel dienen damit er versteht wie ein Oder Funktioniert, denn im Moment dachte er dass es dazu nur | braucht.....
 
genau, da kann ich dir nur zustimmen!

Danke euch beiden trotzdem.
 
Zurück
Oben