if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar

rd

Mitglied
Guten Abend

Folgendes verstehe ich nicht:


Hier wird 3/3=1 ausgegeben. Das ist soweit logisch. Da die Bedingung zutrifft und die folge Anweisungen durchgeführt werden.

Java:
public class If7
{
 public static void main (String[] args)
 {
  int nenner = 3;
  int zähler = 1;
  int wert = 0;

  if (nenner > zähler)
  zähler = nenner;
  nenner = zähler;
  wert = zähler/nenner;
  System.out.println (zähler +"/" + nenner + "=" + wert);
 }
}


Aber:

Wenn ich nun aber das > umdrehe und daraus ein < mache, wird die Bedingung nicht erfüllt und promt gibt er 1/1=1 aus. Das kann ich aber nicht nachvollziehen- warum ?

Java:
public class If7
{
 public static void main (String[] args)
 {
  int nenner = 3;
  int zähler = 1;
  int wert = 0;

  if (nenner < zähler)
  zähler = nenner;
  nenner = zähler;
  wert = zähler/nenner;
  System.out.println (zähler +"/" + nenner + "=" + wert);
 }
}
 
Du hast keine { }, daher beizeht sichd as If nur auf den unmittelbar nächsten befehl [c]zähler = nenner;[/c] und sonst nichts.
 
Abend

Edit: Jetzt nochmal neu:

Bei diesen Befehl
Code:
zähler = nenner;
bekommt doch der zähler den Wert vom nenner. Somit hat der zähler den Wert 3 zugewiesen bekommen. Warum wird aber dann bei der Ausgabe den Wert 1 ausgegeben ?
 
Zuletzt bearbeitet:
nenner=zähler wird aber nicht ausgeführt, da das if nicht true ergibt. Somit bekommt zähler den Wert von Nenner, was darin resultiert, dass beide den Wert 1 haben.

Einbefehlige ifs wenn überhaupt immer in eine Zeile aber es ist besser gerade am Anfang immer die geschweiften Klammern zu setzen.
 
Zuletzt bearbeitet:
Moin,

um es mal klarer zu machen ...
Dein Code entspricht diesem hier :
Java:
    public class If7
    {
     public static void main (String[] args)
     {
      int nenner = 3;
      int zähler = 1;
      int wert = 0;
     
      if (nenner < zähler)
      {  // !!!
           zähler = nenner;
      }  // !!!
      nenner = zähler;
      wert = zähler/nenner;
      System.out.println (zähler +"/" + nenner + "=" + wert);
     }
    }

Gruß
Klaus
 
Ich rate einfach mal was du machen willst. Du hast Zähler und Nenner und wenn der zähler größer als der nenner ist willst du sie vertauschen und am Ende immer den Wert berechnen?
Dazu ist einersetis zu sagen, das wie mehrfach erwähnt eine if Schleife immer {} enthält und auch wenn nur eine zeile in die Klammern soll, schreibt man sie besser dahin.
Und wenn du 2 Variablen vertauchen willst, braucht du eine dritte temporäre Variable, du kannst dir sicherlich selbst überlegen warum das so ist.
 

Zurück
Oben