Aussagenlogik in Java Programmieren

MJannek

Mitglied
Hi Leute, ich suche nach einem Ansatz, um aussagenlogische Formeln in Java auszuwerten. Ich möchte gerne eine aussagenlogische Formel eingeben und eine wahrheitswertetabelle (mit allen Zwischenschritten) ausgegeben bekommen. Hat jemand eine Idee? Vielen Dank im Voraus.

Markus
 

mihe7

Top Contributor
Du musst ein wenig konkreter werden: was genau willst Du eingeben/auswerten? Terme in der Art: NOT X AND B -> zeig mir mal die Wahrheitstabelle? Und als Ergebnis dann etwas wie:

XBNOT XBNOT X AND B
FALSEFALSETRUEFALSEFALSE
FALSETRUETRUETRUETRUE
TRUEFALSEFALSEFALSEFALSE
TRUETRUEFALSETRUEFALSE
 

MJannek

Mitglied
Du musst ein wenig konkreter werden: was genau willst Du eingeben/auswerten? Terme in der Art: NOT X AND B -> zeig mir mal die Wahrheitstabelle? Und als Ergebnis dann etwas wie:

XBNOT XBNOT X AND B
FALSEFALSETRUEFALSEFALSE
FALSETRUETRUETRUETRUE
TRUEFALSEFALSEFALSEFALSE
TRUETRUEFALSETRUEFALSE
Bsp.:

I: Not X And B (Operatoren als Symbole)
O: Tabelle
 

mihe7

Top Contributor
I: Not X And B (Operatoren als Symbole)
Du willst die Symbole eintippen lassen?

Nachtrag: Wie auch immer, im Endeffekt modellierst Du diese Ausdrücke mit Objekten, die ggf. das Ergebnis des Parsens sind, ziehst Dir die Menge der Variablen raus, gehst alle Kombinationen durch, lässt die Ausdrücke je Kombination auswerten und gibst für jede Kombination eine Zeile der Tabelle aus.
 

mihe7

Top Contributor
Quick & Dirty:

Ansatz von https://stackoverflow.com/a/26227947/19657183 übernommen.

Java:
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Predicate;
import java.util.function.BiPredicate;

public class LogicalTerm {
    public static interface Expression {
        boolean eval();
    }
    public static class BinaryExpression implements Expression {
        private final Expression left;
        private final Expression right;
        private final char operator;
        private final BiPredicate<Expression, Expression> pred;
        BinaryExpression(Expression left, Expression right, char operator, BiPredicate<Expression, Expression> pred) {
            this.operator = operator;
            this.left = left;
            this.right = right;
            this.pred = pred;
        }
        public Expression getLeft() { return left; }
        public Expression getRight() { return right; }
        @Override
        public boolean eval() {
            return pred.test(left, right);
        }
        @Override
        public String toString() {
            return left.toString() + " " + operator + " " + right.toString();
        }
    }
    public static class ParenExpression implements Expression {
       
        private final Expression expr;
       
        ParenExpression(Expression expr) {
            this.expr = expr;
        }
        public Expression getExpression() { return expr; }
       
        @Override
        public boolean eval() {
            return expr.eval();
        }
        @Override
        public String toString() {
            return "(" + expr.toString() + ")";
        }
    }
    public static class UnaryExpression implements Expression {
        private final Expression expr;
        private final char operator;
        private final Predicate<Expression> pred;
        UnaryExpression(Expression expr, char operator, Predicate<Expression> pred) {
            this.operator = operator;
            this.expr = expr;
            this.pred = pred;
        }
        public Expression getExpression() { return expr; }
        @Override
        public boolean eval() {
            return pred.test(expr);
        }
        @Override
        public String toString() {
            return operator + expr.toString();
        }
    }
    public static class Literal implements Expression {
        private final boolean value;
        public Literal(boolean value) { this.value = value; }
        @Override
        public boolean eval() {
            return value;
        }
        @Override
        public String toString() {
            return Boolean.toString(value);
        }
    }
    public static class Identifier implements Expression {
        private final String name;
        private boolean value;
        Identifier(String name) { this.name = name; }
        public String getName() { return name; }
        public void setValue(boolean value) { this.value = value; }
      
        public boolean eval() {
            return value;
        }
        @Override
        public String toString() {
            return name;
        }
    }
    private static final String FALSE = "false";
    private static final String TRUE = "true";
    public static final char OR = '\u2228';
    public static final char AND = '\u2227';
    public static final char NOT = '\u00ac';
    private static final char LEFT_PAREN = '(';
    private static final char RIGHT_PAREN = ')';
    private final String text;
    private int pos;
    private int ch;
    private Map<String, Identifier> identifiers = new HashMap<>();
    public LogicalTerm(String text) {
        this.text = text;
    }
    public Collection<Identifier> getIdentifiers() {
        return identifiers.values();
    }
    public Identifier getIdentifier(String name) {
        return identifiers.get(name);
    }
    public Expression compile() {
        pos = -1;
        advance();
        return parse();
    }
    private Expression parse() {
        Expression expression = parseTerm();
        while (true) {
            if (eat(OR)) {
                expression = or(expression, parseTerm());
            } else {
                return expression;
            }
        }
    }
    private Expression parseTerm() {
        Expression expression = parseOperand();
        while (true) {
            if (eat(AND)) {
                expression = and(expression, parseOperand());
            } else {
                return expression;
            }
        }
    }
    private Expression parseOperand() {
        if (eat(NOT)) return not(parseOperand());
        int startPos = pos;
        if (eat(LEFT_PAREN)) {
            Expression expression = parse();
            if (!eat(RIGHT_PAREN)) {
                throw new RuntimeException("Missing ')' at " + pos);
            }           
            return new ParenExpression(expression);
        } else if (Character.isLetter(ch)) {
            while (Character.isLetter(ch) || Character.isDigit(ch)) {
                advance();
            }
            String token = text.substring(startPos, pos);
            if (TRUE.equalsIgnoreCase(token)) return literal(true);
            else if (FALSE.equalsIgnoreCase(token)) return literal(false);
            identifiers.putIfAbsent(token, new Identifier(token));
            return identifiers.get(token);
        } else {
            throw new RuntimeException("Unexpected character " + ch + " at " + pos);
        }
    }
    private void advance() {
        int max = text.length();
        if (pos < max) {
            pos++;
        }
        if (pos < max) {
            ch = text.charAt(pos);
        } else {
            ch = -1;
        }
    }
    private boolean eat(char expected) {
        while (Character.isWhitespace(ch)) advance();
        if (ch == expected) {
            advance();
            return true;
        }
        return false;
    }
    private Expression or(Expression left, Expression right) {
        return new BinaryExpression(left, right, OR, (l, r) -> l.eval() || r.eval());
    }
    private Expression and(Expression left, Expression right) {
        return new BinaryExpression(left, right, AND, (l, r) -> l.eval() && r.eval());
    }
    private Expression not(Expression expr) {
        return new UnaryExpression(expr, NOT, (e) -> !e.eval());
    }
    private Expression literal(boolean value) {
        return new Literal(value);
    }
}

Java:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Stream;
import java.awt.BorderLayout;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.BadLocationException;
public class Test {
    private DefaultTableModel model;
    public void createAndShowGui() {
        model = new DefaultTableModel();
        JTable table = new JTable(model);
        JTextField text = new JTextField(50);
        text.addActionListener(e -> table.setModel(createValueTable(text.getText())));
        JPanel inputText = new JPanel();
        inputText.add(new JLabel("Logischer Term: "));
        inputText.add(text);
        Box inputButtons = Box.createHorizontalBox();
        inputButtons.add(createInputButton(text, "" + LogicalTerm.NOT));
        inputButtons.add(createInputButton(text, "" + LogicalTerm.AND));
        inputButtons.add(createInputButton(text, "" + LogicalTerm.OR));
        Box input = Box.createVerticalBox();
        input.add(inputText);
        input.add(inputButtons);
       
        JScrollPane output = new JScrollPane(table);
        JPanel content = new JPanel(new BorderLayout());
        content.add(input, BorderLayout.NORTH);
        content.add(output);
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(content);
        frame.pack();
        frame.setVisible(true);
    }
    private DefaultTableModel createValueTable(String text) {
        LogicalTerm term = new LogicalTerm(text);
        LogicalTerm.Expression expr;
        try {
            expr = term.compile();
        } catch (RuntimeException ex) {
            return new DefaultTableModel(new Object[][] {{ex.getMessage()}},
                    new Object[]{"Fehlerhafter Ausdruck"});
        }
        List<LogicalTerm.Identifier> identifiers = term.getIdentifiers().stream()
            .sorted(Comparator.comparing(LogicalTerm.Identifier::getName))
            .toList();
        return createValueTable(identifiers, expr);
    }
    private DefaultTableModel createValueTable(List<LogicalTerm.Identifier> identifiers, LogicalTerm.Expression expr) {
        int varCount = identifiers.size();
        List<String> colNames = Stream.concat(
                identifiers.stream().map(LogicalTerm.Identifier::getName),
                Stream.of(expr.toString())
            ).toList();
        DefaultTableModel model = new DefaultTableModel(colNames.toArray(), 0);
        for (int bitset = 0, n = (1 << varCount); bitset < n; bitset++) {
            List<Boolean> values = new ArrayList<>();
            for (int i = 0; i < varCount; i++) {
                boolean value = (bitset & (1 << i)) > 0;
                identifiers.get(i).setValue(value);
                values.add(value);
            }
            values.add(expr.eval());
            model.addRow(values.toArray());
        }       
        return model;
    }
    private JButton createInputButton(JTextField text, String string) {
        JButton button = new JButton(string);
        button.addActionListener(e -> {
            try {
                text.getDocument().insertString(text.getCaretPosition(), string, null);
                text.requestFocus();
            } catch (BadLocationException ex) {
                ex.printStackTrace();
            }
        });
        return button;
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().createAndShowGui());
    }
}

1668818989235.png
 

MJannek

Mitglied
Ok Wie stelle ich die Implikation dar? Äquivalenz wäre ja l.eval() == r.eval() oder? Und an welcher Stelle muss ich beide Operatoren einfügen?
 
Zuletzt bearbeitet:

MJannek

Mitglied
Java:
 private Expression equivalence(Expression left, Expression right) {
        return new BinaryExpression(left, right, EQUIVALENCE, (l, r) -> l.eval()  == r.eval());
    }
Was mache ich falsch?
 

MJannek

Mitglied
Java:
 private Expression equivalence(Expression left, Expression right) {
        return new BinaryExpression(left, right, EQUIVALENCE, (l, r) -> l.eval()  == r.eval());
    }
Was mache ich falsch?
Java:
 private Expression parse() {
        Expression expression = parseTerm();
        while (true) {
            if (eat(OR)) {
                expression = or(expression, parseTerm());
            } else if (eat(EQUIVALENCE)) {
                equivalence(expression, parseTerm());
            } else {
                return expression;
            }
        }
    }

oder muss ich das an einer anderen Stelle einfügen?
 

mihe7

Top Contributor
Du musst Dir die expression in Zeile 7 schon merken:
Java:
expression = equivalence(expression, parseTerm());
 

mihe7

Top Contributor
Danke wie kann ich true und false gegen 0 und 1 ersetzen und in aufsteigender Reihenfolge auflisten
Für die Eingabe müsstest Du in Zeile 160 (bezogen auf LogicalTerm.java in Kommentar #6) prüfen, ob ch == '0' || ch == '1' gilt. Ist das der Fall, erzeugst Du ein Literal mit dem Wert (0 oder 1). Die dazugehörige Klasse musst Du natürlich anpassen, dass im Konstruktor kein boolean mehr genommen wird und bei eval() halt false bei 0 ansonsten true zurückgegeben wird.

Und was heißt in aufsteigender Reihenfolge auflisten? Aktuell werden die 2^n Kombinationen (n = Anzahl der Variablen) der Reihe nach durchgegangen. Bei 0/1 für false/true, würde sich bei zwei Variablen halt 0,0; 0,1; 1,0; 1,1 ergeben.
 

MJannek

Mitglied
Quick & Dirty:

Ansatz von https://stackoverflow.com/a/26227947/19657183 übernommen.

Java:
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Predicate;
import java.util.function.BiPredicate;

public class LogicalTerm {
    public static interface Expression {
        boolean eval();
    }
    public static class BinaryExpression implements Expression {
        private final Expression left;
        private final Expression right;
        private final char operator;
        private final BiPredicate<Expression, Expression> pred;
        BinaryExpression(Expression left, Expression right, char operator, BiPredicate<Expression, Expression> pred) {
            this.operator = operator;
            this.left = left;
            this.right = right;
            this.pred = pred;
        }
        public Expression getLeft() { return left; }
        public Expression getRight() { return right; }
        @Override
        public boolean eval() {
            return pred.test(left, right);
        }
        @Override
        public String toString() {
            return left.toString() + " " + operator + " " + right.toString();
        }
    }
    public static class ParenExpression implements Expression {
      
        private final Expression expr;
      
        ParenExpression(Expression expr) {
            this.expr = expr;
        }
        public Expression getExpression() { return expr; }
      
        @Override
        public boolean eval() {
            return expr.eval();
        }
        @Override
        public String toString() {
            return "(" + expr.toString() + ")";
        }
    }
    public static class UnaryExpression implements Expression {
        private final Expression expr;
        private final char operator;
        private final Predicate<Expression> pred;
        UnaryExpression(Expression expr, char operator, Predicate<Expression> pred) {
            this.operator = operator;
            this.expr = expr;
            this.pred = pred;
        }
        public Expression getExpression() { return expr; }
        @Override
        public boolean eval() {
            return pred.test(expr);
        }
        @Override
        public String toString() {
            return operator + expr.toString();
        }
    }
    public static class Literal implements Expression {
        private final boolean value;
        public Literal(boolean value) { this.value = value; }
        @Override
        public boolean eval() {
            return value;
        }
        @Override
        public String toString() {
            return Boolean.toString(value);
        }
    }
    public static class Identifier implements Expression {
        private final String name;
        private boolean value;
        Identifier(String name) { this.name = name; }
        public String getName() { return name; }
        public void setValue(boolean value) { this.value = value; }
     
        public boolean eval() {
            return value;
        }
        @Override
        public String toString() {
            return name;
        }
    }
    private static final String FALSE = "false";
    private static final String TRUE = "true";
    public static final char OR = '\u2228';
    public static final char AND = '\u2227';
    public static final char NOT = '\u00ac';
    private static final char LEFT_PAREN = '(';
    private static final char RIGHT_PAREN = ')';
    private final String text;
    private int pos;
    private int ch;
    private Map<String, Identifier> identifiers = new HashMap<>();
    public LogicalTerm(String text) {
        this.text = text;
    }
    public Collection<Identifier> getIdentifiers() {
        return identifiers.values();
    }
    public Identifier getIdentifier(String name) {
        return identifiers.get(name);
    }
    public Expression compile() {
        pos = -1;
        advance();
        return parse();
    }
    private Expression parse() {
        Expression expression = parseTerm();
        while (true) {
            if (eat(OR)) {
                expression = or(expression, parseTerm());
            } else {
                return expression;
            }
        }
    }
    private Expression parseTerm() {
        Expression expression = parseOperand();
        while (true) {
            if (eat(AND)) {
                expression = and(expression, parseOperand());
            } else {
                return expression;
            }
        }
    }
    private Expression parseOperand() {
        if (eat(NOT)) return not(parseOperand());
        int startPos = pos;
        if (eat(LEFT_PAREN)) {
            Expression expression = parse();
            if (!eat(RIGHT_PAREN)) {
                throw new RuntimeException("Missing ')' at " + pos);
            }          
            return new ParenExpression(expression);
        } else if (Character.isLetter(ch)) {
            while (Character.isLetter(ch) || Character.isDigit(ch)) {
                advance();
            }
            String token = text.substring(startPos, pos);
            if (TRUE.equalsIgnoreCase(token)) return literal(true);
            else if (FALSE.equalsIgnoreCase(token)) return literal(false);
            identifiers.putIfAbsent(token, new Identifier(token));
            return identifiers.get(token);
        } else {
            throw new RuntimeException("Unexpected character " + ch + " at " + pos);
        }
    }
    private void advance() {
        int max = text.length();
        if (pos < max) {
            pos++;
        }
        if (pos < max) {
            ch = text.charAt(pos);
        } else {
            ch = -1;
        }
    }
    private boolean eat(char expected) {
        while (Character.isWhitespace(ch)) advance();
        if (ch == expected) {
            advance();
            return true;
        }
        return false;
    }
    private Expression or(Expression left, Expression right) {
        return new BinaryExpression(left, right, OR, (l, r) -> l.eval() || r.eval());
    }
    private Expression and(Expression left, Expression right) {
        return new BinaryExpression(left, right, AND, (l, r) -> l.eval() && r.eval());
    }
    private Expression not(Expression expr) {
        return new UnaryExpression(expr, NOT, (e) -> !e.eval());
    }
    private Expression literal(boolean value) {
        return new Literal(value);
    }
}

Java:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Stream;
import java.awt.BorderLayout;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.BadLocationException;
public class Test {
    private DefaultTableModel model;
    public void createAndShowGui() {
        model = new DefaultTableModel();
        JTable table = new JTable(model);
        JTextField text = new JTextField(50);
        text.addActionListener(e -> table.setModel(createValueTable(text.getText())));
        JPanel inputText = new JPanel();
        inputText.add(new JLabel("Logischer Term: "));
        inputText.add(text);
        Box inputButtons = Box.createHorizontalBox();
        inputButtons.add(createInputButton(text, "" + LogicalTerm.NOT));
        inputButtons.add(createInputButton(text, "" + LogicalTerm.AND));
        inputButtons.add(createInputButton(text, "" + LogicalTerm.OR));
        Box input = Box.createVerticalBox();
        input.add(inputText);
        input.add(inputButtons);
      
        JScrollPane output = new JScrollPane(table);
        JPanel content = new JPanel(new BorderLayout());
        content.add(input, BorderLayout.NORTH);
        content.add(output);
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(content);
        frame.pack();
        frame.setVisible(true);
    }
    private DefaultTableModel createValueTable(String text) {
        LogicalTerm term = new LogicalTerm(text);
        LogicalTerm.Expression expr;
        try {
            expr = term.compile();
        } catch (RuntimeException ex) {
            return new DefaultTableModel(new Object[][] {{ex.getMessage()}},
                    new Object[]{"Fehlerhafter Ausdruck"});
        }
        List<LogicalTerm.Identifier> identifiers = term.getIdentifiers().stream()
            .sorted(Comparator.comparing(LogicalTerm.Identifier::getName))
            .toList();
        return createValueTable(identifiers, expr);
    }
    private DefaultTableModel createValueTable(List<LogicalTerm.Identifier> identifiers, LogicalTerm.Expression expr) {
        int varCount = identifiers.size();
        List<String> colNames = Stream.concat(
                identifiers.stream().map(LogicalTerm.Identifier::getName),
                Stream.of(expr.toString())
            ).toList();
        DefaultTableModel model = new DefaultTableModel(colNames.toArray(), 0);
        for (int bitset = 0, n = (1 << varCount); bitset < n; bitset++) {
            List<Boolean> values = new ArrayList<>();
            for (int i = 0; i < varCount; i++) {
                boolean value = (bitset & (1 << i)) > 0;
                identifiers.get(i).setValue(value);
                values.add(value);
            }
            values.add(expr.eval());
            model.addRow(values.toArray());
        }      
        return model;
    }
    private JButton createInputButton(JTextField text, String string) {
        JButton button = new JButton(string);
        button.addActionListener(e -> {
            try {
                text.getDocument().insertString(text.getCaretPosition(), string, null);
                text.requestFocus();
            } catch (BadLocationException ex) {
                ex.printStackTrace();
            }
        });
        return button;
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().createAndShowGui());
    }
}

Anhang anzeigen 19666
Für die Eingabe müsstest Du in Zeile 160 (bezogen auf LogicalTerm.java in Kommentar #6) prüfen, ob ch == '0' || ch == '1' gilt. Ist das der Fall, erzeugst Du ein Literal mit dem Wert (0 oder 1). Die dazugehörige Klasse musst Du natürlich anpassen, dass im Konstruktor kein boolean mehr genommen wird und bei eval() halt false bei 0 ansonsten true zurückgegeben wird.

Und was heißt in aufsteigender Reihenfolge auflisten? Aktuell werden die 2^n Kombinationen (n = Anzahl der Variablen) der Reihe nach durchgegangen. Bei 0/1 für false/true, würde sich bei zwei Variablen halt 0,0; 0,1; 1,0; 1,1 ergeben.
Ok. Im obigen Beispiel ist die Ausgabe Reihenfolge aber nicht so
 

mihe7

Top Contributor
Ach, so meinst Du. Das kannst Du in createValueTable ändern:

Java:
identifiers.get(varCount - 1 - i).setValue(value);
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Das Problem ist, dass die Werte der Reihe nach eingefügt werden, unabhängig von der Position. Am besten einfach noch eine Schleife drunter: erst Werte setzen, dann zur Tabelle hinzufügen.

Java:
        for (int bitset = 0, n = (1 << varCount); bitset < n; bitset++) {
            for (int i = 0; i < varCount; i++) {
                boolean value = (bitset & (1 << i)) > 0;
                identifiers.get(varCount - 1 - i).setValue(value);
            }
            List<Boolean> values = new ArrayList<>();
            for (LogicalTerm.Identifier id : identifiers) {
                values.add(id.eval());
            }
            values.add(expr.eval());
            System.out.println(java.util.Arrays.toString(values.toArray()));
            model.addRow(values.toArray());
            System.out.println(model.getDataVector());
        }
 

MJannek

Mitglied
Ist es möglich über einen Button zu steuern, ob man Zwischenergebnisse sehen möchte? Z.B.bei a->NOT b die Spalten a b NOT b und a-> NOT B (mit Zwischenergebnis) oder nur a b und a-> NOT b (ohne Zwischenergebnis)
 

mihe7

Top Contributor
Hatte mir schon gedacht, dass etwas in der Richtung kommen wird, daher wurden im Code auch schon Vorbereitungen getroffen :)

Ich kann Dir aber nur den Ansatz sagen, denn das ist nicht mal eben gemacht: Der String wird in einen Abstract Syntax Tree geparst, der aus Expression-Objekten besteht. Die Wurzel dieses Baums erhältst Du per parse().

Zum Beispiel wäre NOT b AND a ein Baum der Art
Code:
    BinaryOperator(AND)
        /             \
       /               \
  UnaryOperator(NOT)  Identifier(A)
       |
   Identifier(B)

Du kannst nun den Typ der Expression prüfen und je nachdem hast Du Zugriff auf den bzw. die Teilausdrücke (UnaryOperator -> getExpression(), BinaryOperator -> getLeftExpression() und getRightExpression()). Eine String-Darstellung einer jeden Expression erhältst Du per toString() und das Ergebnis per eval().

Du könntest also hergehen, durch den Baum laufen und BinaryExpressions auslesen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 6
KonradN Java 18 Allgemeine Java-Themen 8
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
O Newton Algorithmus Java Allgemeine Java-Themen 1
P Java Quellen finden Allgemeine Java-Themen 3
M Java Analyse/ SWOT-Analyse Allgemeine Java-Themen 13
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18

Ähnliche Java Themen

Neue Themen


Oben