Ohne if und ohne Konditional-Operator

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?

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

Upsala, sry bin schon müde. Habt erbarmen :wink:

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

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

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 :confused:

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 :confused:

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

Grüße, JasonDelife.

1 Like

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 :confused:

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

1 Like

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)

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
1 Like

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

N.

Hallo,

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