boolean Übung hilfe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • boolean Übung hilfe

    Hab hier eine interessante Aufgabe über boolean gefunden :
    .......................................................................................

    Schreiben Sie ein Konsole- Programm "LogicalExpressions" , das folgendes
    leistet:

    a) Es definiert vier Variable a, b, c, d vom Typ int sowie die Hilfsvariable result
    vom Typ boolean. Weitere Hilfsvariable dürfen nach Bedarf definiert werden.

    b) Es lässt Werte für a, b, c, d über die Konsole eingeben.

    c) Es berechnet der Reihe nach die Wahrheitswerte der folgenden Aussagen und legt diese in
    der Hilfsvariablen result ab. Nach jeder Berechnung wird result mit geeigneter
    Beschriftung am Bildschirm ausgegeben.

    Aussage 1: Mindestens eine der Variablen a, b, c, d hat einen Wert > 1.

    Aussage 2: Mindestens eine, jedoch höchstens drei der Variablen a, b, c, d haben einen
    Wert > 1.

    Aussage 3: Genau eine der Variablen a, b, c, d hat einen Wert <0.

    Aussage 4: Alle Variablen a, b, c, d, deren Werte > 0 sind, sind auch > 10.

    Lösungshinweis: Für jede Aussage dürfen Sie höchstens eine if else Kontrollstuktur
    verwenden.


    ........................................................................................................................

    hab aber leider keinen plan wie ich das umsetzen soll hab bis jetzt noch nie boolean verwendet geschweige den if Schleifen kann mir bitte jemand helfen ???

    Bis jetzt hatte ich nur folgende bescheidene Ergüsse

    Quellcode

    1. public class boolescheAus {
    2. public static void main (String[] args)
    3. {
    4. int a = Console.readInt("Bitte geben Sie a ein");
    5. int b = Console.readInt("Bitte geben Sie b ein");
    6. int c = Console.readInt("Bitte geben Sie c ein");
    7. boolean reault = true;
    8. if ()
    9. {
    10. }
    11. }
    12. }
    Alles anzeigen


    Weiter komm ich nicht auch nicht nach langem googlen:(

    Bitte antwortet so schnell wie möglich ist echt wichtig :cursing: !!!
  • Also dazu, wie man grundsätzlich eine if-Bedingung in Java verwendet, gibt es nun wirklich reichlich Material im Netz.
    Du musst schon ein wenig mehr Eigeninitiative zeigen ...
    netzonaut.de - Ein Blog zu den Themen Internet, Webentwicklung, Linux und OpenSource-Software
    jexlab.net - Webentwicklung zu fairen Konditionen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von umt ()

  • hey leute danke für die Antworten....
    Danke auch an truespin war ein sehr nützlicher tipp mit den Operatoren habe nun folgendes zusammen gewerkelt;):

    Quellcode

    1. public class boolescheAus {
    2. public static void main (String[] args)
    3. {
    4. int a = Console.readInt("Bitte geben Sie a ein");
    5. int b = Console.readInt("Bitte geben Sie b ein");
    6. int c = Console.readInt("Bitte geben Sie c ein");
    7. int d = Console.readInt("Bitte geben Sie d ein");
    8. boolean resault;
    9. // Aussage 1
    10. if(a>1||b>1||c>1||d>1)
    11. {
    12. resault = true;
    13. System.out.println(resault);
    14. }
    15. else
    16. {
    17. resault = false;
    18. System.out.println(resault);
    19. }
    20. // Aussage 2
    21. if ((a>1)^(b>1)^(c>1)^(d>1)&& !((a>1) && (b>1) && (c>1) && (d>1)))
    22. {
    23. resault = true;
    24. System.out.println(resault);
    25. }
    26. else
    27. {
    28. resault = false;
    29. System.out.println(resault);
    30. }
    31. // Aussage 3
    32. if (((a<0)&&!((b<0)^(c<0)^(d<0)))^
    33. ((b<0)&&!((a<0)^(d<0)^(c<0)))^
    34. ((c<0)&&!((a<0)^(b<0)^(d<0)))^
    35. ((d<0)&&!((a<0)^(b<0)^(c<0))))
    36. {
    37. resault = true;
    38. System.out.println(resault);
    39. }
    40. else
    41. {
    42. resault = false;
    43. System.out.println(resault);
    44. }
    45. // Aussage 4
    46. if (!(((a>0 && a>10)^(b>0 && b>10)^(c>0 && c>10)^(d>0 && d>10))&
    47. ((a<0 && a<10)^(b<0 && b<10)^(c<0 && c<10)^(d<0 && d<10))))
    48. {
    49. resault = true;
    50. System.out.println(resault);
    51. }
    52. else
    53. {
    54. resault = false;
    55. System.out.println(resault);
    56. }
    57. }
    58. }
    Alles anzeigen


    So nun funzt das Ding auch fast so wie es soll wenn Aussage 4 nicht wäre, die gibt nämlich immer das Gegenteil von dem aus was sie soll deswegen auch die Nigierung falls sich jemand wundert die sollte alles ja umdrehn aber es kommt immer noch das Gegenteil raus:(
    finde absolut nicht den Fehler in Aussage 4 findet ihr ihn vieleicht ????
    Falls ihr noch andere Verbesserungsvorschläge habt bezüglich Formatierung oder vieleicht möglichkeiten zur Vereinfachung findet bin für alles offen ????

    Danke schon mal im Vorraus
  • Erstmal ein ganz wichtiger Hinweis:
    Du benutzt ziemlich oft den ^-Operator. Das ist aber erstmal ein bitwise-Operator, die man in logischen Ausdrücken nicht verwenden sollte (auch wenn sie wohl auch für boolean Werte definiert sind). Zum anderen ist der ^-Operator ein XOR und kein OR, du verwendest ihn aber wie einen OR-Operator, was zu falschen Ergebnissen führen kann. Nimm stattdessen einfach den ||-Operator.
    Bei Aussage 4 müsste, soweit ich das auf die schnelle Überblicken kann, es reichen, wenn du das "nicht" vorne wieder wegnimmst, und auch nur die erste Zeile benutzt. Dann alle ^ durch || ersetzen und es müsste eigentlich hinhaun.


    Edit: Achja, noch ne kleinigkeit:
    statt

    Quellcode

    1. if (irgendwas)
    2. {
    3. result = true;
    4. }
    5. else
    6. {
    7. result = false;
    8. }


    kann man auch einfach das schreiben:

    Quellcode

    1. result = (irgendwas);

    "irgendwas" ist nämlich ein boolscher Ausdruck und liefert somit true oder false zurück. Daher kann man sich das if-Konstrukt sparen.
  • Danke Ronder für dich vielen wichtigen tipps nun funzt auch alles Wunderbar... Jedoch die 2 zeile in Aussage 4 wird gebraucht da man sonst nicht die ganze Aussage formuliert aber gut kann dir ja egal sein ;)

    Kannst du mir vileicht noch kurz nen genaues Beispiel zu if(irgendwas) posten bekomm des nicht so ganz hin da ja can not resolve irgendwas ........????? ?(
  • Naja, man könnte deinen Code für die erste Aussage so umformulieren:

    Quellcode

    1. result = ( a > 1 || b > 1 || c > 1 || d > 1);
    2. System.out.println(result);

    aber das is nur ne Kleinigkeit, am besten machst dus so, wie du es am übersichtlichsten findest.


    Aussage 4 war doch:
    Aussage 4: Alle Variablen a, b, c, d, deren Werte > 0 sind, sind auch > 10.

    Dass du die 2. Zeile einfach weglassen kannst, war wirklich nicht ganz richtig. Aber du prüfst ja z.B. (a<0 && a<10). Wenn a aber kleiner als 0 ist, ist a natürlich auch kleiner als 10 ;) Und außerdem hast du denn Fall a=0 nicht abgedeckt.
  • ja du hast vollkommen recht ich habe hier mal ein paar Testergebnisse kopiert hier ist auch in der Zeile -5 -4 -3 -2 sehr gut zu erkennen warum man bei Aussage 4 die 2 Zeile braucht



    Eingaben Aussage 1 Aussage 2 Aussage 3 Aussage 4

    -1 -2 0 15 true true false true

    3 4 -1 8 true true true false

    -6 15 -8 11 true true false true

    2 15 18 20 true false false false

    -5 -4 -3 -2 false false false true

    -4 -5 3 2 true true false false

    20 30 20 40 true false false true

    1 0 1 0 false false false false

    -1 0 0 0 false false true true