True or false Verständnis

Mariogomez

Mitglied
Hey Leute!

ich habe eine Frage bzgl. der im Anhang beigefügten Aufgabe. Unzwar verstehe ich nicht bei dem Code:
Code:
package aufgabe3;

import javapack.Einlesen;

public class Logik {

    public static void main(String[] args) {
        int [] a;
        boolean w;
      
        int fl = Einlesen.liesInt("Feldlaenge> ");
        a = new int [fl];
      
        for (int i = 0; i < a.length; i++) {
            a[i] = Einlesen.liesInt("a[" + i + "]> " );
          
        }

        //1. Aussage prüfen
        w = false;
        for (int i = 0; i < a.length; i++) {
            if (a[i] > 1) w = true;
        }

        System.out.println("1. Aussage (Mindestens ein Feldelement hat einen Wert größer als 1): " + w);
      
        //2. Aussage: mehr als 1 Element, aber weniger als 4 haben wert > 1
        w = false;
        int anzahlElemente = 0; //Zähler der die Anzahl der Elemente > 1 erfasst
        for (int i = 0; i < a.length; i++) {
            if (a[i] > 1) anzahlElemente++;
            }
        System.out.println(anzahlElemente + " sind größer als 1");
      
        if (anzahlElemente >= 1 && anzahlElemente <= 3) w = true;
        System.out.println("2. Aussage: Mindestens ein, jedoch höchstens drei Feldelemente von a haben einen Wert größer als 1.");
  
        //3. Aussage
        w = false;
        int anzahlNegativ = 0;
        for (int i = 0; i < a.length; i++) {
            if (a[i] < 0 ) anzahlNegativ++;
          
        }
        if (anzahlNegativ == 1) w = true;
        System.out.println("3. Aussage: (Genau ein Feldelement von a ist negativ.) " +w);
  
        // 4. Aussage
        w = true;
        for (int i = 0; i < a.length; i++) {
            if (a[i] < 0 && a[i] <= 10) w = false;
  
          
        }
        System.out.println("4. Aussage: (Alle Feldelemente, die größer als 0 sind, sind auch größer als 10.)" +w);
  
        //5. Aussage
        w = false;
        for (int i = 0; i < a.length; i++) {
            if (a[i] > 10 && a[i] <= -5) w = true;
  
        }
  
        System.out.println("5. Aussage: (Für jedes Feldelement von a gilt: Es ist entweder größer als 10 oder es ist kleiner als -5.)" + w);
     
    }
      
}

Die die ich nicht verstehe sind fett hervorgehoben. Ich habe die Aufgabe schon mehrere male programmiert, jedoch verstehe ich es trotzdem nicht. Der Rest des Codes ist eigentlich nicht besonders schwer..
 

Anhänge

  • test.PNG
    test.PNG
    127,4 KB · Aufrufe: 37
Zuletzt bearbeitet von einem Moderator:

httpdigest

Top Contributor
Ohne zu sehen, was du denn jetzt nun nicht verstehst (weil man nicht sieht, was denn fett ist, da du alles in das code-Tag gesetzt hast...), hier die folgenden Anmerkungen:

4. Aussage:

Die Bedingung `(a < 0 && a <= 10)` ist falsch. Sie ist ja logisch gesehen dasselbe wie `(a < 0)`, da, wenn der Wert kleiner als 0 ist, er ja auch logischerweise kleiner gleich 10 sein muss. Somit reicht hier die stärkere der beiden Bedingungen. Sie sind aber dennoch falsch für die Aussage "Alle Feldelemente, die größer als 0 sind, sind auch größer als 10". Aussagenlogisch heißt das ja: ∀a:a>0→a>10
Hier solltest du dich jetzt auskennen mit Aussagenlogik, und, wie man das in Code/Java übersetzt, nämlich: `a <= 0 || a > 10`. Also diese Bedingung muss für alle a erfüllt sein.

5. Aussage:

Auch hier ist die Bedingung `(a > 10 && a <= -5)` für die Aussage "jedes Feldelement ist entweder größer als 10 oder es ist kleiner als -5" falsch. Du willst hier sagen: ∀a:a>10⋁a<-5, also: `a > 10 || a < -5`, welches für jedes a gelten muss.

Das Ganze lässt sich auch mal wieder schön funktional mit Streams ausdrücken:
Java:
int[] a = { 2, 15, 18, 20 }; // <- Beispiel
System.out.println("Aussage1: " + Arrays.stream(a).anyMatch(e -> e > 1));
long aussage2count = Arrays.stream(a).filter(e -> e > 1).count();
System.out.println("Aussage2: " + (aussage2count >= 1 && aussage2count < 4));
System.out.println("Aussage3: " + (Arrays.stream(a).filter(e -> e < 0).count() == 1));
System.out.println("Aussage4: " + Arrays.stream(a).filter(e -> e > 0).allMatch(e -> e > 10));
System.out.println("Aussage5: " + Arrays.stream(a).allMatch(e -> e > 10 || e < -5));
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor

Neumi5694

Top Contributor
Die Zuweisungen stehen hier, um den Wert zu initialisieren.
Innerhalb der Schleife gibt es eventuell einen Fall, in dem w auf true gesetzt wird.
Aber was passiert, wenn der Fall nicht eintritt? Dann braucht w einen Standardwert. Deshalb wird vor der Schleife der Standardwert gesetzt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X JTable mit Checkboxen -> Setzen (true/false) der Checkboxen per Mouseklick... Allgemeine Java-Themen 3
D Wie fragt man Booleans auf true oder false ab? Allgemeine Java-Themen 18
H ganze zahl true / false Allgemeine Java-Themen 3
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
K Methoden Arrays auf true Werte prüfen Allgemeine Java-Themen 4
GilbertGrape Warum macht man "if(true)" Allgemeine Java-Themen 18
C SwingWorker.cancle(true) tötet alle Worker Allgemeine Java-Themen 3
S isDirectory() bei Dateien manchmal true Allgemeine Java-Themen 6
J Konsolen Anwendung mit while(true) Allgemeine Java-Themen 6
S instanceof liefert true, aber cast funktioniert nicht! Allgemeine Java-Themen 6
B Window.setAlwaysOnTop(true) - Fokusverlust Allgemeine Java-Themen 4
ARadauer zuweisung ergibt doch true, oder? Allgemeine Java-Themen 17
F While(true)-Schleife im JPanel Allgemeine Java-Themen 9
N Bekomme NIE ein TRUE obwohl ich es bekommen müsste :( Allgemeine Java-Themen 10
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
C Variablen == gibt immer false aus. Allgemeine Java-Themen 2
M JButton setEnabled(false) seltsames Ereignis Allgemeine Java-Themen 1
R JNI if abfrage gibt immer false zurück. Allgemeine Java-Themen 7
S HashMap containsKey liefert immer false zurück Allgemeine Java-Themen 15
S Fenster "verschwindet" nicht, trotz setVisible(false); Allgemeine Java-Themen 22
T Set.contains() auch false wenn value == null? Allgemeine Java-Themen 4
S aFile.delete() liefert false - Gründe ? Allgemeine Java-Themen 2
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
H Mathematisch fehlendes Verständnis (3D-Denken) Allgemeine Java-Themen 14
A Hilfe beim Verständnis Allgemeine Java-Themen 16
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
parrot Verständnis des Codes Allgemeine Java-Themen 3
L Vererbung Verständnis Probleme Vererbung Allgemeine Java-Themen 2
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
J Josephus Verständnis Allgemeine Java-Themen 1
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
H Erste Schritte Beispiele zum Verständnis Allgemeine Java-Themen 3
T Input/Output Verständnis: Wo wird das File auf die Festplatte gepackt? Allgemeine Java-Themen 4
B Hilfe beim Verständnis von Mergesort Allgemeine Java-Themen 5
C int zu byte cast - verständnis Allgemeine Java-Themen 3
M Verständnis enum - switch Allgemeine Java-Themen 2
M Verständnis "synchronized" Allgemeine Java-Themen 4
C Verständnis zur Strukturierung von Java-Projekten/Interfaces Allgemeine Java-Themen 2
C Autoboxing Verständnis Allgemeine Java-Themen 4
S Probleme mit dem allgemeinen Verständnis zuverrebung usw. Allgemeine Java-Themen 6
S Verständnis Problem - Classpath Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben