Ohne if und ohne Konditional-Operator...

Von: , Frage gestellt am Do, 7. Jan 2010

Hallo,

ich habe in Informatik eine Aufgabe gestellt bekommen, in der ich ein Programm schreiben soll, wo der Nutzer eine Zahl(double) eingeben soll.

Nun soll ich ausgeben: true, wenn der Wet zwischen 1.0 und 7.5 liegt und false, wenn nicht.

Jetzt steht aber als Anmerkung dabei, dass man da keine if-Anweisung oder einen Konditional-Operator.

Ich hab da jetzt schon lange geknobelt,aber ich meine, man kann das nicht ohne if-Anweisung machen! Wie soll man denn das denn sonst "prüfen"

Hat vll jemand anderes eine Idee?

8 Antworten zu dieser Frage

  1. Antwort von nach 6 Minuten 0 hilfreich
    Re: Ohne if und ohne Konditional-Operator...

    Jetzt steht aber als Anmerkung dabei, dass man da keine
    if-Anweisung oder einen Konditional-Operator.
    Upsala, sry bin schon müde. Habt erbarmen ;)

    Also,dass man if-Anweisung und Konditional-Operator nicht braucht

  2. Antwort von nach 33 Minuten 0 hilfreich
    Re: Ohne if und ohne Konditional-Operator...

    Hallo, ich meine, man kann das nicht ohne if-Anweisung machen! Wie soll man denn das denn sonst "prüfen"
    das "Prüfen" machst du doch im Wesentlichen durch einen booleschen Ausdruck, also einen, der true oder false ergibt; einverstanden? Abhängig vom Ergebnis musst du dann etwas tun oder lassen; dazu benutzt du Kontrollstrukturen. Und jetzt überleg einfach mal weiter, welche Kontrollstrukturen du außer "if" schon kennst ... Vielleicht kann man die ja kreativ einsetzen.

    Andreas

    • Antwort von nach einem Tag 0 hilfreich
      Re^2: Ohne if und ohne Konditional-Operator...

      oder lassen; dazu benutzt du Kontrollstrukturen. Und jetzt
      überleg einfach mal weiter, welche Kontrollstrukturen du außer
      "if" schon kennst ... Vielleicht kann man die ja kreativ
      einsetzen.

      Hi,ich hab jetzt nochmal überlegt,aber ich bin genau so schlau wie vorher :/

      Mir fallen dann halt nur noch Sachen wie while,for ein.... die stehen zwar nicht in der Aufgabe, aber ich denke man benötigt die auch nicht.

      Ja mit true und false prüfe ich,aber ich benötige ja etwas wie if oder for um true oder false benutzen zu können... oder nicht? Entweder hab ich total das Brett vorm Kopf oder ich weiß auch nicht :/

      • Antwort von nach einem Tag 1 hilfreich
        Re^3: Ohne if und ohne Konditional-Operator...

        Eine Bedingung ergibt doch einen boolean.
        Der ist ja dann true oder false.
        Mehr benötigst du doch nicht.

        Grüße, JasonDelife.

      • Antwort von nach einem Tag 1 hilfreich
        Re^3: Ohne if und ohne Konditional-Operator...

        Hallo, Mir fallen dann halt nur noch Sachen wie while,for ein....
        genau die könntest du benutzen; in den Schleifen wird ja auch eine Bedingung geprüft. Natürlich müsste man noch darauf achten, keine Endlosschleife zu produzieren. Wenn b eine Bedingung ist (also ein Ausdruck vom Typ boolean), dann könnte man z.B. so etwas machen:

        boolean done = false;
        while (!done && b) {
        // b ist wahr
        done = true;
        }
        while (!done) {
        // b ist falsch
        done = true;
        }
        


        Das ist natürlich ein ziemlicher Missbrauch der Möglichkeiten von Java, aber lehrreich, um Bedingungen, Schleifen, etc. zu verstehen. Entweder hab ich total das Brett vorm Kopf oder ich
        weiß auch nicht :/
        Es gibt noch eine andere elegante Lösung. Dazu muss man wissen, dass System.out.println auch für den Typ boolean überladen ist.

        Andreas

      • Antwort von nach einem Tag 1 hilfreich
        Re^3: Ohne if und ohne Konditional-Operator...

        Howdy,

        also, das sind jetzt nun erstmal 2 Aufgaben in einer, die eine, wie ein Boolean auszugeben ist, und die andere zu verstehen, weshalb die boole'schen Ausdrücke für doubles ab und andere Resulate liefern, als erwartet. Deshalb schau dir mal das Folgende an:

        public class Test {
        private static boolean equal(double a, double b) {
        final double EPS = 1E-12;
        return Math.abs(a-b)<EPS;
        }
        public static void main(String[] args) {
        for (double value = 0.0; value < 8.0; value += 0.1) {
        final boolean b = (equal(1.0, value) || 1.0 < value)
        && (equal(7.5, value) || value < 7.5);
        System.out.print(Math.round(value*10)/10.0);
        System.out.print(' ');
        System.out.println(b);
        }
        }
        }
        


        und versuch es zu verstehen, bevor du es abschreibst...
        [Vielleicht gibt es das korrekte equal auch in irgendeiner Systemlib, aber da bin ich jetzt mal zu faul]

        Gruss
        norsemanna

        • Antwort von nach einem Tag 0 hilfreich
          Nachtrag

          Wenn 1.0 und 7.5 nicht mit drinnen sein sollen in dem Bereich, dann entfaellt natuerlich der Teil mit equal.

          N.

      • Antwort von nach einem Tag 0 hilfreich
        Re^3: Ohne if und ohne Konditional-Operator...

        Hallo,

        ja jetzt hat es gefunkt! Danke für de schnellen und sehr ausführlichen Antworten!

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!