Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird?

mathilda712

Mitglied
Ich soll folgende if-Verzweigung so umformen, dass ein Bedingungsoperator und keine if-Verzweigung benutzt wird.

Java:
public static int help1(int e, int f) {
    if ((e <= 0) || (f <= 0)) {
      return 0;
    }
    if(e = f) {
      e = (1 - e);
        f = (f + e);
    } else {
      f = (1 - f);
      e = (e + f);


Ich hatte mehrere Ideen, wie ich das umsetze. Meine erste Idee war es den ersten Teil der Verzweigung von if((e <= 0) usw. bis return 0; in eine for-Schleife umzubauen, was scheinbar auch geklappt hat, aber ich bin mir unsicher, ob man es nicht doch mit einem Bedingungsoperator hinbekommt.

Ich hab ein wenig umprobiert, aber ich bin mir ziemlich unsicher. Deshalb wollte ich nachfragen, ob mein Code so Sinn ergibt oder inwieweit ich ihn anpassen sollte?

Meine Idee für den ersten Teil:
Java:
  rValue = (f <= 0) ? 0 : !0;


Würde Ratschläge sehr willkommen heißen. 🙂
 
Zuletzt bearbeitet:
Ich soll folgende if-Verzweigung so umformen, dass ein Bedingungsoperator und keine if-Verzweigung benutzt wird.

Java:
public static int help1(int e, int f) {
    if ((e <= 0) || (f <= 0)) {
      return 0;
    }
    if(e = f) {
      e = (1 - e);
        f = (f + e);
    } else {
      f = (1 - f);
      e = (e + f);


Ich hatte mehrere Ideen, wie ich das umsetze. Meine erste Idee war es den ersten Teil der Verzweigung von if((e <= 0) usw. bis return 0; in eine for-Schleife umzubauen, was scheinbar auch geklappt hat, aber ich bin mir unsicher, ob man es nicht doch mit einem Bedingungsoperator hinbekommt.

Ich hab ein wenig umprobiert, aber ich bin mir ziemlich unsicher. Deshalb wollte ich nachfragen, ob mein Code so Sinn ergibt oder inwieweit ich ihn anpassen sollte?

Meine Idee für den ersten Teil:
Java:
  rValue = (f <= 0) ? 0 : !0;


Würde Ratschläge sehr willkommen heißen. 🙂
Anmerkung:

Eine meiner Ideen hat nun tatsächlich geklappt, also Hilfe wird direkt nicht mehr benötigt, für Verbesserungen bin ich aber immer offen 🙂
 
Java:
if(e = f)
Ist kein Vergleich sondern eine Zuweisung und es wird immer true ergeben.
Vergleich von zwei int == Nicht =
 
Ok, also soll:
Java:
    public static int help1(int e, int f) {
        if ((e <= 0) || (f <= 0)) {
            return 0;
        }
        if (e == f) {
            e = (1 - e);
            f = (f + e);
        } else {
            f = (1 - f);
            e = (e + f);
        }
        return f;
    }

durch den ternären Operator umgeformt werden?

Das ginge so:
Java:
    public static int help2(int e, int f) {
        if (e <= 0 || f <= 0) {
            return 0;
        }
        e = e == f ? (1 - e) : (e + (1 - f));
        f = e == f ? (f + e) : (1 - f);
        return f;
    }

    public static void main(String[] args) {
        System.out.println(help1(3, 5));
        System.out.println(help1(4, 3));
        System.out.println(help2(3, 5));
        System.out.println(help2(4, 3));
    }

Das Muster dafür ist immer gleich...
 
Ok, also soll:
Java:
    public static int help1(int e, int f) {
        if ((e <= 0) || (f <= 0)) {
            return 0;
        }
        if (e == f) {
            e = (1 - e);
            f = (f + e);
        } else {
            f = (1 - f);
            e = (e + f);
        }
        return f;
    }

durch den ternären Operator umgeformt werden?

Das ginge so:
Java:
    public static int help2(int e, int f) {
        if (e <= 0 || f <= 0) {
            return 0;
        }
        e = e == f ? (1 - e) : (e + (1 - f));
        f = e == f ? (f + e) : (1 - f);
        return f;
    }

    public static void main(String[] args) {
        System.out.println(help1(3, 5));
        System.out.println(help1(4, 3));
        System.out.println(help2(3, 5));
        System.out.println(help2(4, 3));
    }

Das Muster dafür ist immer gleich...
Danke dir, hab’s sogar fast genauso 🙂
 

Zurück
Oben