Ausdrucksparser für Mathematische Ausdrücke

Todo

Aktives Mitglied
Hi @ all,

ich soll für die FH einen Mathe Parser schreiben, ich habe vier Testfälle, Exceptions für ungültige Ausdrücke wollte ich erst schreiben wenn die gültigen Funktionieren, die ersten drei Testfälle funktionieren auch, aber das letzte Funktioniert nicht.

Bei dem Ausdruck "1 + 2 * ( i + 2 * k - 1 ) / 2 + j" mit i = 3, k = 4 und j = 9 berechnet mein Parser 30, anstatt 20.
Vielleich kann jemand einmal drüber gucken und mir den Fehler sagen.

Gucke nämlich schon seit 3 Tagen drüber und bin irgendwie zu blind um es zu sehen.

Danke schonmal.

Hier der Quelltext:
Der Parser
Java:
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Klasse zum Parsen.
 *
 */
public class Parser {

    /** Arrayliste fuer die einzelnen Tokens. */
    private ArrayList<String> tokenListe = new ArrayList();

    /** Objekt der den vorherigen geparsten Ausdruck speichert */
    private Ausdruck vorheriger;

    /** Speichert das geparste Ergebnis */
    private Ausdruck ergebnis;

    /** Instantzvariable zum Speichern des Index */
    private int parserIndex = 0;

    /**
     * Methode zum Parsen eines Ausdrucks.
     *
     * @param infixdarstellung Infixdarstellung die geparst werden soll.
     *
     * @return der geparste Ausdruck.
     */
    public Ausdruck parse(String infixdarstellung) {
        /* Initaliesiert die Arrayliste der einzelnen Tokens. */
        initArrayListe(infixdarstellung);

        /* Variable zum Speichern des geparsten Ausdruck */
        Ausdruck geparsterAusdruck = null;

        /*
         * Durchläuft jedes Token solange der ParserIndex kleiner
         * der groeße der TokenListe ist.
         */
        while(parserIndex < tokenListe.size()) {
        
            geparsterAusdruck = parseAusdruck(parserIndex);
            vorheriger = geparsterAusdruck;
            parserIndex++;
            }
        
        return geparsterAusdruck;
    }

    /**
     * Parst einen Summand oder eine Folge von Summanden die mit '+'
     * oder '-' verbunden sind.
     *
     * @return geparster Ausdruck fuer Summanden.
     */
    private Ausdruck parseAusdruck(int index) {
        ergebnis = parseSummand(index);
        if (tokenListe.get(index).equalsIgnoreCase("+")) {
            parserIndex++;
            ergebnis = new OperatorAusdruck
                    (vorheriger, '+',
                    parseAusdruck(index + 1));
        }

        else if (tokenListe.get(index).equalsIgnoreCase("-")) {
            parserIndex++;
            ergebnis = new OperatorAusdruck
                    (vorheriger, '-',
                    parseAusdruck(index + 1));
        }
        return ergebnis;
    }

    /**
     * Parst einen Faktor oder eine Folge von Faktoren die mit '*'
     * oder '/' verbunden sind.
     *
     * @return geparster Ausdruck fuer Faktoren.
     */
    private Ausdruck parseSummand(int index) {
        ergebnis = parseFaktor(index);

        if (tokenListe.get(index).equalsIgnoreCase("*")) {
            parserIndex++;
            ergebnis =  new OperatorAusdruck
                    (vorheriger, '*',
                    parseAusdruck(index + 1));
        }

        else if (tokenListe.get(index).equalsIgnoreCase("/")) {
            parserIndex++;
           ergebnis =  new OperatorAusdruck
                    (vorheriger, '/',
                    parseAusdruck(index + 1));
        }

        
        return ergebnis;
    }


    /**
     * Parst eine Konstante, eine Variable oder Klammerausdruecke.
     *
     * @return geparster Ausdruck fuer Variablen oder Konstanten.
     */
    private Ausdruck parseFaktor(int index) {
        /* Regulaerer Ausdruck fuer Klammer auf. */
        Pattern klammerAuf = Pattern.compile("\\(");
        //Matcher fuer dem Regulaeren Ausdruck Klammer auf.
        Matcher matcherklammerAuf = klammerAuf.matcher(tokenListe.get(index));

        /* Das gleiche fuer die Klammer zu. */
        Pattern klammerZu = Pattern.compile("\\)");
        //Matcher fuer dem Regulaeren Ausdruck Klammer zu.
        Matcher matcherklammerZu = klammerZu.matcher(tokenListe.get(index));

        /* Regulaerer Ausdruck fuer Zahlen. */
        Pattern zahlen = Pattern.compile("[0-9]+");
        //Matcher fuer dem Regulaeren Ausdruck Zahlen.
        Matcher matcherzahlen = zahlen.matcher(tokenListe.get(index));
        
        /* Regulaerer Ausdruck fuer Zahlen. */
        Pattern variablen = Pattern.compile("[a-z]+");
        //Matcher fuer dem Regulaeren Ausdruck Zahlen.
        Matcher matchervariablen = variablen.matcher(tokenListe.get(index));
        
        if (matcherklammerAuf.find() == true) {
            parserIndex++;
            ergebnis = parseAusdruck(parserIndex);
        }

        if (matcherklammerZu.find() == true) {
            if (parserIndex < tokenListe.size()) {
                parserIndex++;
                ergebnis = parseAusdruck(parserIndex);
            }
        }

        if (matcherzahlen.find() == true) {
            ergebnis = new Konstante(Integer.parseInt(tokenListe.get(index)));
        }

        if (matchervariablen.find() == true) {
            ergebnis = new Variable(tokenListe.get(index));
        }

        return ergebnis;
    }

    /**
     * Initaliesiert die Liste aller Tokens.
     */
    private void initArrayListe(String infixdarstellung) {
        java.util.StringTokenizer st =
            new java.util.StringTokenizer(infixdarstellung, " ");

        while(st.hasMoreTokens()) {
            tokenListe.add(st.nextToken());
        }
    }
}

Die Klasse Ausdruck
Java:
/**
 * Oberklasse Ausdruck, die alles Ausdruecke repraesentiert.
 *
 */
public abstract class Ausdruck {
    /**
     * Abstrakte Methode, die den Wert dieses Ausdrucks
     * basierend auf der Variablenbelegung liefert.
     *
     * @return Wert der zuruekgegeben wird.
     */
    public abstract int gibWert(Variablenbelegung variablenbelegung);


}

Die Klasse OperatorAusdrucl
Java:
/**
 * Klasse zur Darstellung eines Operationsausdrucks.
 *
 */
public class OperatorAusdruck extends Ausdruck {
    /** Erzeugt einen neuen Ausdruck. */
    private Ausdruck linkerAusdruck;

    /** Erzeugt einen neuen Ausdruck. */
    private Ausdruck rechterAusdruck;

    /** Erzeugt ein neues char zeichen. */
    private char operator;

    /**
     * Erzeugt ein Objekt dieser Klasse für die angegebenen Daten.
     *
     * @param linkerAusdruck Wert des ersten Ausdrucks.
     * @param operator Wert des char Zeichen.
     * @param rechterAusdruck Wert des zweiten Ausdrucks.
     */
    public OperatorAusdruck(Ausdruck linkerAusdruck, char operator,
            Ausdruck rechterAusdruck) {
        this.linkerAusdruck = linkerAusdruck;
        this.rechterAusdruck = rechterAusdruck;
        this.operator = operator;
    }

    @Override
    /**
    * Prueft, ob zwei Operatorausdruecke gleich sind.
    *
    * @param obj ein beliebiges Objekt
    * @return <code>true</code> genau dann, wenn das uebergebene Objekt
    *         denselben Wert repraesentiert wie dieses Objekt.
    */
    public boolean equals(Object obj) {
        boolean istGleich = false;
        if (obj instanceof OperatorAusdruck) {
            OperatorAusdruck operatorAusdruck = (OperatorAusdruck) obj;

            istGleich = 
                    operatorAusdruck.linkerAusdruck.equals(this.linkerAusdruck)
                    && operatorAusdruck.rechterAusdruck.equals(this.rechterAusdruck)
                    && operatorAusdruck.operator == this.operator;
        }
        return istGleich;
    }

    @Override
    /**
     * Methode, die den Wert des Operatorausdrucks zurueck gibt.
     *
     */
    public int gibWert(Variablenbelegung variablenbelegung) {
        int ergebnis = 0;

        switch(operator) {
            case '+':
                ergebnis = linkerAusdruck.gibWert(variablenbelegung) +
                        rechterAusdruck.gibWert(variablenbelegung);
                break;

            case '-':
                ergebnis = linkerAusdruck.gibWert(variablenbelegung) -
                        rechterAusdruck.gibWert(variablenbelegung);
                break;

            case '*':
                ergebnis = linkerAusdruck.gibWert(variablenbelegung) *
                        rechterAusdruck.gibWert(variablenbelegung);
                break;

            case '/':
                ergebnis = linkerAusdruck.gibWert(variablenbelegung) /
                        rechterAusdruck.gibWert(variablenbelegung);
                break;
            }
        return ergebnis;
        }

    }

Die Klasse Konstante
Java:
/**
 * Klasse zur Darstellung einer Konstante.
 *
 */
public class Konstante extends Ausdruck {

    /** Erzeugt eine neue Konstante. */
    private final int wert;

    /**
     * Erzeugt ein Objekt dieser Klasse.
     *
     * @param wert Wert der Konstanten.
     */
    public Konstante(int wert) {
        this.wert = wert;
    }

    @Override
    /**
    * Prueft, ob zwei Objekte gleich sind.
    *
    * @param obj ein beliebiges Objekt
    * @return <code>true</code> genau dann, wenn das uebergebene Objekt
    *         denselben Wert repraesentiert wie dieses Objekt
    */
    public boolean equals(Object obj) {
        boolean istGleich = false;

        if (obj instanceof Konstante) {
            Konstante konstante = (Konstante) obj;
            if (konstante.wert == this.wert) {
                    istGleich = true;
            }
        }
        return istGleich;
    }



    @Override
    /**
     * Methode, die den Wert der Konstante zurueck gibt.
     */
    public int gibWert(Variablenbelegung variablenbelegung) {
        return this.wert;
    }
}

Die Klasse Variable
Java:
/**
 * Klasse zur Darstellung einer Variable.
 *
 */
public class Variable extends Ausdruck {

    /** Variablennamen als String. */
    private String name;

    /**
     * Erzeugt ein Objekt dieser Klasse für die angegebenen Daten.
     *
     * @param name Name der Variable.
     */
    public Variable(String name) {
        this.name = name;
    }



    @Override
    /**
    * Prueft, ob dieses Objekt gleich dem uebergebenen Objekt ist.
    *
    * @param obj ein beliebiges Objekt.
    * @return <code>true</code> genau dann, wenn das uebergebene Objekt
    *         denselben Wert repraesentiert wie dieses Objekt.
    */
    public boolean equals(Object obj) {
        boolean istGleich = false;

        if (obj instanceof Variable) {
            Variable variable = (Variable) obj;
            if (variable.name.equalsIgnoreCase(this.name)) {
                    istGleich = true;
            }
        }
        return istGleich;
    }

    @Override
    /**
     * Methode, die den Wert der Variable zurück gibt.
     */
    public int gibWert(Variablenbelegung variablenbelegung) {
        return variablenbelegung.gibWert(this.name);
    }
}

Die Klasse Variablenbelegung
Java:
import java.util.HashMap;

/**
 * Klasse zum Belegen einzelner Variablen.
 *
 */
public class Variablenbelegung {

    private HashMap<String, Integer> map;
    /**
     * Erzeugt ein Objekt dieser Klasse.
     */
    public Variablenbelegung() {
        map = new HashMap();
    }

    /**
     * Methode belge zum belegen der Variablen.
     *
     * @param name Name der Variable.
     * @param wert Wert der Variable.
     */
    public void belege(String name, int wert) {
        map.put(name, wert);
    }

    /**
     * Methode, die den Wert der Variable zurueck gibt.
     *
     * @param name Name der Variable.
     *
     * @return Wert der Variable.
     */
    public int gibWert(String name) {
        return map.get(name);
    }
}

Und der Parser Test
Java:
import junit.framework.TestCase;

/**
 * Testklasse fuer Methoden der Klasse Parser.
 *
 */
public class ParserTest extends TestCase {
        /** Erzeugt ein Parser.  */
        private Parser parser;

        /** Erzeugt ein Variablenbelegungsobjekt. */
        private Variablenbelegung variablenbelegung;

        /**
         * Erzeugt ein Objekt dieser Klasse
         * mit dem angegebenen Namen.
         *
         * @param name  Name dieses Tests
         */
        public ParserTest(String name) {
              super(name);
        }

        /**
         * Testdaten aufbauen.
         */
        protected void setUp() {
            parser = new Parser();
            variablenbelegung = new Variablenbelegung();

            /* Erzeugt eine neue Variablenbelegung fuer i = 3. */
            variablenbelegung.belege("i", 3);

            /* Erzeugt eine neue Variablenbelegung fuer i = 3. */
            variablenbelegung.belege("k", 4);

            /* Erzeugt eine neue Variablenbelegung fuer i = 3. */
            variablenbelegung.belege("j", 9);
        }

        /**
         * Testet die Methode Parse in der KLasse Parser.
         */
        public void testParse() {
            /** Parst den Ausdruck "10". */
            assertEquals(10 , parser.parse("10").gibWert(variablenbelegung) );

            /** Parst den Ausdruck "7 + i" mit i = 3. */
            assertEquals(10 , parser.parse("7 + i").gibWert(variablenbelegung));

            /** Parst den Ausdruck "( i + 18 ) / 2".
             * i = 3.
             */
            assertEquals(10 , parser.parse("( i + 18 ) / 2")
                    .gibWert(variablenbelegung));

            /* Parst den Ausdruck "1 + 2 * ( i + 2 * k - 1 ) / 2 + j".
             * mit i = 3, k = 4 und j = 9.
             */
            assertEquals(20, parser.parse("1 + 2 * ( i + 2 * k - 1 ) / 2 + j")
                    .gibWert(variablenbelegung));
        }

        /**
         * Startet den Test.
         *
         * @param args  wird nicht verwendet
         */
        public static void main(String[] args) {
        junit.textui.TestRunner.run(ParserTest.class);
        }
}

Danke nochmal.....
 

AlexSpritze

Bekanntes Mitglied
Wie wäre es mit einigen Logger-Ausgaben, um zu sehen, was da alles gemacht wird? Sowas wie
Java:
logger.debug("Found Ausdruck: "+ausdruck);
 
S

SlaterB

Gast
viel interessanter als der Fehler ist ja, wie du bei der Suche vorgehst,
ein elementarer Schritt wäre z.B. die Baumstruktur der Ausdrücke auszugeben

dabei ist mir aufgefallen dass anscheinend Punktrechnung vor Strichrechnung nicht berücksichtigt wird, richtig?
bzw. selbst Klammern helfen nicht
1 + 2 * ( i + 2 * k - 1 ) / 2 + j
wird wie
((((((1 + 2) * i) + 2) * k) - 1 ) / 2) + j
ausgewertet, mit Rundungsfehler bei int durch int (43 / 2 = 21) kommt man damit auf 30

auch die gibWert-Berechnung ließe sich mit Debugger oder System.out.println genauestens verfolgen,
scheint aber korrekt, von der Rundung abgesehen, nur der Baum wird eben falsch zusammengestellt,

-----

bedenklich ist auch, dass einfache Klammern außen zu einer Exception führen:
Ausdruck a = parser.parse("( i + 2 )");

und der Parser ist leerzeichenempfindlich, i+2 statt i + 2 mag er nicht

-------

zum Abschauen hier noch eine andere Version
http://www.java-forum.org/allgemeines/12306-parser-fuer-mathematische-formeln.html
 
Zuletzt bearbeitet von einem Moderator:

-horn-

Bekanntes Mitglied
moien,

arrrg, wenn mir mein kumpel nicht sowas programmiert hätte würde ich dir nun meinen code geben, aber ohne erlaubnis mache ich das nicht. will keinen zoff :D.
aber ich werd ihn mal hieraus aufmerksam machen. vielleicht kann er dir helfen.
mir hat er sowas mal für meine diplomarbeit gebaut, damit meine simulation auch auf externe formeln zurückgreifen konnte.

ich versprechenix, aber ich werd ihm vom thread mal berichten.

grüße, Andreas
 

Landei

Top Contributor
Schon mal überlegt, einen "richtigen" Parser-Generator zu verwenden (ANTLR, JavaCC, SableCC, Coco/R). Wenn das Ding noch "wachsen" soll, wirst du mit deinem handgefriemelten Code nicht glücklich, falls du nicht schon einige Erfahrungen mit sowas hast.
 

Marco13

Top Contributor
Wenn das Ding noch "wachsen" soll, wirst du mit deinem handgefriemelten Code nicht glücklich, falls du nicht schon einige Erfahrungen mit sowas hast.

Dem Einstieggsatz nach...

ich soll für die FH einen Mathe Parser schreiben,

soll es vermutlich nicht mehr wachsen (der allseits bekannte STL-Zyklus: Schreiben-Testieren-Löschen) - vielmehr geht es wohl um das Sammeln der angesprochenen Erfahrungen...
 

Todo

Aktives Mitglied
Ich weiß das ich die Klammern nicht wirklich berücksichtige, wenn eine Klammer auf kommt erhöre ich einfach das Token und guck mir das nächste an, weiß aber nicht was ich da besonders beachten soll, ausser halt bei den Exceptions, das auch auf jede Klammer auf eine Klammer zu folgt.

EDIT: Und ja ich beachte nicht Punkt vor Strichrechnung, ich geh einfach Token für Token rekursiv die Methode ab, mir wurd gesagt das es wohl so möglich ist....

PS: Danke für den Link, bin ich schonmal drauf gestoßen werde ich mir mal intensiv durchlesen....
 
Zuletzt bearbeitet:
S

SlaterB

Gast
niemand hat behauptet, es wäre einfach,
richtige Klammersetzung ist komplex, ob man das hier alles erklären kann?

als ich das selber mal gebaut hatte, hatte ich glaube ich Extra-Knoten für die Klammern, dort dann neu mit links, rechts anfangen usw.,
noch schwieriger ist aber sicherlich Punkt vor Strich

naja, viel einfacher als es selber zu bauen wäre wie gesagt das Abschauen, versuche es damit,
wenn das auch nicht klappt dann hmm..
 

Todo

Aktives Mitglied
Ja das mit den char vergleichen anstatt mit den StringTokenizer ist auf jeden Fall schonmal 10 mal besser, wieder mal was einfaches gelernt :)....
Der Algo arbeitet leider mit Prioritäten, so wollte ich das auch erst machen sollten wir aber leider nicht :D ... mal sehen was ich da noch so raus machen kann danke schonmal an alle
 

Antoras

Top Contributor
Du programmierst nicht für deinen Lehrer, sondern für dich! Niemand kann dir vorschreiben wie ein Programm am Ende auszusehen hat solange es das macht für was es ursprünglich konzipiert wurde.

Ich kann mir außerdem nicht vorstellen, dass dein Lehrer dich ausdrücklich darauf hingewiesen hat, dass alle zusätzlichen Features strengstens untersagt sind und mit nicht Anerkennung der Arbeit angesehen werden...
 

Todo

Aktives Mitglied
Naja abschauen ist ja auch nicht so das ware, und leider macht es es ja auch komplett anders als ich wie ich finde....
muss nochmal schauen wirklich ne Lösung habe ich leider noch nicht...
 

Todo

Aktives Mitglied
Programm läuft,
mal ne kurze Frage zu den &Exceptions, kann man sich ein regulären Ausdruck basteln der auf richtige Klammersetzung und richte Operatorensetzung (+-*/) achtet ?
 

Landei

Top Contributor
Normalerweise trennt man das Zerstückeln in sinnvolle Einheiten ("Tokens") und die Auswertung der Tokensuppe (meistens mit einem Syntaxbaum oder "AST"). Die beiden Programmteile nennt man "Lexer" und "Parser". Diese Einteilung beruht auf der genauso bitteren wie gesicherten Erfahrung, das alles andere in einem Kuddelmuddel endet. Vergiss also ganz schnell die Idee, das alles auf einmal mit regulären Ausdrücken zu erschlagen - es wird nicht funktionieren. Wie man das Klammer- und Operator-Rang-Problem lösen kann, hatte ich schon geschrieben, aber ignoriere das ruhig, wenn du einen besseren Weg weißt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 10
G Icon für App Java Basics - Anfänger-Themen 1
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M GUI für Vier-Gewinnt. Java Basics - Anfänger-Themen 4
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
Ostkreuz Counter für Booleanwerte Java Basics - Anfänger-Themen 8
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
M generate Methode für Streams Java Basics - Anfänger-Themen 6
I Datenmodell für "Tags" Java Basics - Anfänger-Themen 6
Lion.King for-Kontrollstruktur für Pyramide Java Basics - Anfänger-Themen 8
B Mit Countdown Midnestdauer für Teilaufgabenerledigung erzwingen Java Basics - Anfänger-Themen 8
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
javamanoman Java für Online Banking Java Basics - Anfänger-Themen 12
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
I SQL / JPA Query für StartDate und EndDate Java Basics - Anfänger-Themen 1
T getMethode für ein Array Java Basics - Anfänger-Themen 2
Fats Waller Farben mixen für den Hintergrund ? Java Basics - Anfänger-Themen 1
H Suche jemanden für kleine Uni-Abgabe/ mit Vergütung Java Basics - Anfänger-Themen 1
K Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die? Java Basics - Anfänger-Themen 15
N Api nur für Textdatein (.txt) Java Basics - Anfänger-Themen 2
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
R Ist Java das Richtige für mich? Java Basics - Anfänger-Themen 4
E Mittelquadratmethode für Hexadezimalzahlen Java Basics - Anfänger-Themen 1
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
L Konzept für Quiz Java Basics - Anfänger-Themen 33
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
L loop für Namen Java Basics - Anfänger-Themen 11
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
L Methode für Zweidimensionale Arrays Java Basics - Anfänger-Themen 4
Kanaska Datentyp für Zahlenbereiche Java Basics - Anfänger-Themen 7
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
U BestPractise für Deployment unter Windows gesucht Java Basics - Anfänger-Themen 12
lilrack UML Diagramm für Parkplatzverwaltung Java Basics - Anfänger-Themen 8
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
T Start-Activity für Java Maven Web-Anwendung festlegen Java Basics - Anfänger-Themen 2
T Alternative für switch case Java Basics - Anfänger-Themen 1
P Ressourcen für JSON & API Informationen? Java Basics - Anfänger-Themen 1
M Java Einstellung von Apache POI für MS Word Erstellung mit Eclipse Java Basics - Anfänger-Themen 6
L Compiler-Fehler SupressWarning für clone() Java Basics - Anfänger-Themen 6
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6
B Methode für jede beliebe Entity erstellen Java Basics - Anfänger-Themen 7
D Ampel für Mitarbeiter zum An-/Abwesend zeigen Java Basics - Anfänger-Themen 28
T Wahrscheinlichkeiten für Slot Machine Java Basics - Anfänger-Themen 13
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
M Code nur für Cracks? Crack the Passwort Übung Java Basics - Anfänger-Themen 7
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
T Roulette für Anfänger Java Basics - Anfänger-Themen 7
A Überprüfung für unentschieden in TicTacToe Java Basics - Anfänger-Themen 10
L Best Practice Code Refactoring für Methoden mit fast gleicher Aufbau Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben